1. Python / Говнокод #24543

    −1

    1. 1
    https://stackoverflow.com/questions/51521158/in-python-why-does-0xbin-return-false

    Свежий обосрамс питона

    Запостил: syoma, 26 Июля 2018

    Комментарии (77) RSS

    • Поэтому я за "PHP".
      Ответить
      • > Поэтому я за "PHP".

        Я тоже, потому что у "PHP" не бывает свежих обосрамсов, все они древние как говно, их все давно знают и никто с этим ничего не делает. )))

        https://govnokod.ru/23384
        Ответить
    • Поэтому я за то , чтобы все токены разделялись пробелами , и не будет таких хуйни .
      0xb in ( )
      Ответить
    • Почему обосрамс? Разве не похуй на это?
      Ответить
      • P.S. Это также пиздато, как в "С++" "[5]a", вместо "a[5]", но никто так не пишет
        Ответить
      • > Почему обосрамс?
        Потому что я там часто в гостях бываю.
        Ответить
    • Напомню старую байку:

      „В программе на ФОРТРАНе, управляющей первоей венерианской миссией Штатов, программист записал оператор DO в примерно таком виде:
      DO 3 I = 1.3

      Он совершил ошибку - поставил точку вместо запятой. Однако, компилятор воспринял это как допустимое выражение, поскольку в ФОРТРАНе нет зарезервированных выражений, пробелы игронируются, и переменные не должны быть предватерительно задекларированы. Хотя оператор, очевидно, является некорректно записанным оператором DO, компилятор интерпретировал его как присвоение новой переменной DO3I значения 1.3. Эта "мелкая" ошибка привела к провалу миссии. Конечно, часть ответственности за эту ошибку на миллиард долларов лежит на программитсе, но не следует ли также винить в ней и разработчиков ФОРТРАНа?“
      Ответить
      • Причем мы точно знаем, что ни один программист на php никогда не проваливал межпланетной миссии на миллиард долларов. Ни одна программа, написанная для космических аппаратов на php никогда не давала сбой. Конечно, часть заслуг на миллиарды долларов (не потратил — значит заработал) лежат на всех программистах на php, но не следует ли также благодарить за них и разработчиков php?
        Ответить
        • > мы точно знаем

          Ну не знаю... А что если по профессии ты унылый сишкошлёп ракетных прошивок, а после работы ты из программиста на языке калькуляторов превращаешься в «PHP»-бога?
          Ответить
          • > после работы
            - достаточно переодеться в телефонной будке
            Ответить
            • в рванину?
              Ответить
              • В ростовой костюм синего слоника.
                Ответить
              • показать все, что скрытоРванина у тебя, и я, кстати, сейчас в ней болтаюсь.
                Ответить
              • рhрванину
                Ответить
                • В контексте соседних тредов

                  рhрванилу
                  Ответить
                  • Кстати, Роман, хотел спросить у тебя, как у человека в теме: щас в продакшене используются лиспы? Реально ли лисп взять в качестве scripting language?
                    Ответить
                    • Я так понимаю, вопросы друг с другом никак не связаны, буду отвечать по очереди.

                      > щас в продакшене используются лиспы?

                      Да. Common Lisp используется в Grammarly [1] и в Google Flights [2]. Clojure много где используется, на фронтенде и бэкэнде. Cisco написали компилятор Scheme [3] в натив, наверное, тоже для прода.

                      [1] https://tech.grammarly.com/blog/running-lisp-in-production
                      [2] https://www.reddit.com/r/IAmA/comments/396zhp/were_the_google_flights_team_makers_of_f light/
                      [3] https://developer.cisco.com/codeexchange/github/repo/cisco/ChezScheme

                      > Реально ли лисп взять в качестве scripting language?

                      Можно, но зачем? Нужны макросы? Или просто лисп ради лиспа?
                      Ответить
                      • Можно-ли считать emacs lisp примером "list as scripting language'?
                        Ответить
                      • > Можно, но зачем? Нужны макросы? Или просто лисп ради лиспа?
                        - интересуюсь практиками встраивания DSL'ей
                        Ответить
                        • Если код будут писать обычные пользователи, они тебя проклянут за эти скобки. Они же не умеют в paredit, зачем им твои манипуляции AST. Плюсы у лиспа, несомненно, есть, но я бы дважды подумал перед внедрением.

                          Если скрипты будут писать программисты, они тебя задолбают вопросом "а почему не X?" и поменяют язык скриптования как только ты отвернёшься.
                          Ответить
                          • А если всё-таки попадутся тру-лисперы, то им всё равно не понравится его DSL и они запилят свой (или будут ругаться, что им для этого не хватает функционала).
                            Ответить
                            • Будут ныть и просить анафорические лямбды
                              Кстати, в Dyalog APL они есть.
                              Ответить
                          • Да, ты прав. Просто иногда читаю доки и туториалы по Racket, потом задаюсь вопросом, что мне делать с этим бесценным грузом
                            Ответить
                            • Наверняка есть идея персонального проекта, попробуй реализовать на схемке и убедись, какое же говно эти языки без нормальной статической типизации.
                              Читать доки полезно, но гораздо менее полезно, чем делать что-то самому.
                              Ответить
                              • Ну в общем-то в Racket есть racket/typed, он по идее первым проходом делает type checking, но я не проверял и не знаю, насколько это лучше тех же питонячьих type hints. Как в схеме и других лиспах я тоже не в курсе, но вряд ли сильно лучше.

                                Меня в своё время соблазнила модульная модель, но ты как-то сказал, что в ML (кажется?) она намного лучше, но ещё и на ML моих моральных сил не хватит после

                                #,@(for/list ([x (syntax->list #'(fields ...))]
                                                           [n (in-naturals 1)])
                                и всякого такого.

                                А вот найти какую-то клёвую штуку для скриптования в перспективе было бы полезно. В мобайле оно практически не нужно, конечно, за пределами гейдева, но всё же. Но сходу ничего, кроме AngelScript, на ум не приходит.

                                Кстати, кто-то щупал MPL от JetBrains?
                                Ответить
                                • >> MPL от JetBrains?
                                  MPS мож?

                                  Imho, идея DSLей, столь популярная в нулевые, не выстрелила.
                                  Ибо создать язык программирования (пусть даже и урезанного) -- сложно. Очень мало у кого это получается сделать красиво. Потому все DSL неюзабельное говно.

                                  Попытки же сделать DSL из fancy языка (Vagrant и Puppet на Ruby, Gradle на Groovy) еще более пичальны: получается не "простой и красивый язык конфигурации" а неебически сложное API, использующее редкоземельные и сложные конструкции языка, писать на котором обдуманно можно только очень хорошо зная язык.

                                  Высокоуровневый заембеженный язык типа lua это ок.
                                  А синтаксис грэдла или вагранта это буэээ

                                  (это всё было имхо)
                                  Ответить
                                  • Да, MPS.

                                    Не понял, чем "высокоуровневый заембеженный язык типа lua" принципиально отличается от "DSL из fancy языка". Впрочем, сам считаю, что брать для DSL очередной мунспик значит не уважать своих пользователей (и +1 причина, почему я не люблю, например, cocoapods). Значит ли это, что DSL должен быть декларативным?
                                    Ответить
                                    • Отличается тем, что lua это mature язык программирования который долго улучшали, по которому есть книги, сообщество, IDE и эксперты.

                                      Кроме того он достаточно простой, потому месяца ковыряний с lua достаточно чтобы прочитать на нем любой код.

                                      DSLже который сделал программист Вася используя прикольные средства Ruby или Groovy обычно выглядит вот так:

                                      post_install do |installer|
                                        require 'cocoapods-amimono/patcher'
                                        Amimono::Patcher.patch!(installer)
                                      end
                                      .

                                      Чтобы понять что здесь написано надо знать Ruby, иначе не понятно что такое do с палочками и что вообще происходит.

                                      Я-то понимаю что вызывается post_install, ему передается блок от параметра installer который делает require и вызывает patch у класса Patcher в модуле Amimono.

                                      А если бы я руби не знал то это был бы кромешный песец.

                                      Вот язык конфигурации nginx или apache или postgres обычный пользователь может понять потому что он простой. А эти языки не простые, не логичные, не консистентные. Потому что их создавали не дизайнеры языков.

                                      >>. Значит ли это, что DSL должен быть декларативным?
                                      Если у тебя полностью декларативный, не тьюрингполный язык типа языка ini файлов или JSON/TOML/YAML то всё отлично.
                                      Его поймет пользователь. Но тогда это не будет DSL, имхо.

                                      DSL это полноценный ЯП, просто заточенный для решения каких-то определенных задач, имеющий для них столько сахара что в итоге простые вещи можно описывать декларативно.


                                      Вот еще пример (без знания гредла выглядит как набор букв): почему где-то есть скобки, а где-то нет?
                                      apply plugin: 'java'
                                      apply plugin: 'eclipse'
                                      apply plugin: 'application'
                                      
                                      mainClassName = 'hello.HelloWorld'
                                      
                                      repositories {
                                          mavenCentral()
                                      }
                                      
                                      jar {
                                          baseName = 'gs-gradle'
                                          version =  '0.1.0'
                                      }
                                      Ответить
                                      • > lua это mature язык программирования который долго улучшали, по которому есть книги, сообщество, IDE и эксперты
                                        - откровенно говоря, замени здесь lua на ruby и смысл не изменится. Наверное, дело всё же в синтаксисе, в первую очередь

                                        > месяца ковыряний с lua
                                        - многовато ты взял. Ты думаешь, что руби/лисп/питон за месяц ковыряний невозможно выучить до той степени, чтобы понимать install-файлы? Вот если ты берёшь тулзу и можешь её скрипты поправить через час ковыряния, то это показатель.

                                        Я не знаю, может в lua действительно всё настолько просто, а ты банально преувеличиваешь ради красного словца.
                                        Ответить
                                        • >>откровенно говоря, замени здесь lua на ruby и смысл не изменится.
                                          Ну, на самом деле изменится потому что синтаксис lua проще чем у ruby или perl, например. Но в целом же любой полноценный язык изучить проще (и помощь по нему найти проще) чем DSL который вчера придумали.

                                          >>Вот если ты берёшь тулзу и можешь её скрипты поправить через час ковыряния, то это показатель

                                          Строковые литералы можно научиться менять через 2 минуты, но вот всерьез понять что написано и поправить -- это сложнее. И я считаю что никакие известные мне DSLи такой возможности не давали.

                                          Ты же сам видел pods, разве не знающий Ruby может в них всерьез что-то понять? Ну мунспик же.

                                          platform :ios, '8.0'
                                          use_frameworks!
                                          
                                          workspace 'Examples.xcworkspace'
                                          project 'Resource Bundle Example.xcodeproj'
                                          
                                          target 'Resource Bundle Example' do
                                            pod 'ResourceExample', :path =>  'Example Pods'
                                          end


                                          >> может в lua действительно всё настолько просто

                                          Lua создавался как язык для конфигурирования изначально, так что мне кажется что он проще чем Ruby:) И уж точно конфиг на луа будет проще обычному (не знающему ни Lua ни Ruby) программисту чем те же pods кмк.
                                          Ответить
                                          • > язык ... конфигурирования
                                            - пиздатый термин, мне нравится.

                                            Ну да, я ж в принципе не спорю с основной твоей идеей, тот же Podfile обычно просто копипастят и потом строчки добавляют, не вникая. Вот у Carthage уже всё намного проще (но там и формат совсем тривиальный). А так я тоже когда-то такое делал, только на Питоне. Делаешь скрипт, который грузится твоим фреймворком, прямо система плагинов ёпта. В некоторых случаях может быть оправдано.

                                            Кстати, читал недавно, что Naughty Dog по слухам используют Racket в качестве скриптового языка для своих игр. Интересный выбор. Правда, я подозреваю, что там не чистый Racket, а какой-то язык на его основе, который они замутили макросами и парсером.
                                            Ответить
                                            • >>- пиздатый термин, мне нравится.
                                              Это не я придумал, это сам автор языка его так называет: его придумали чтобы конфигурировать на нем софт, потому там и таблицы чтобы удобнее описывать:
                                              user = {
                                                name  =  "pukin",
                                                age  = 100500,
                                                items = {"spoon", "fork", "sable"}  
                                              }

                                              >>, тот же Podfile обычно просто копипастят и потом строчки добавляют, не вникая

                                              вот да:)

                                              >> по слухам используют Racket в качестве скриптового языка для своих игр
                                              Будет забавно если в какой-то момент все люди начнут использовать диалекты лиспа в качестве конфигов. Вернутся, так сказать, к истокам (вспоминая emacs)). Не думаю что будет хуже чем DSLи на руби:)
                                              Ответить
                                              • > Будет забавно если в какой-то момент все люди начнут использовать диалекты лиспа в качестве конфигов

                                                JaneStreet так делают, у них sexp это основной формат сериализации и конфигурации. Это, в частности, послужило причиной того, что билд-файлы для OCaml (система сборки dune) описываются в виде sexp [1]. Разумеется, билд-файлы для Common Lisp (система сборки ASDF) всегда использовали sexp [2].
                                                [1] https://dune.readthedocs.io/en/latest/quick-start.html
                                                [2] https://common-lisp.net/~mmommer/asdf-howto.shtml
                                                Ответить
                                                • > sexp
                                                  > p-convention:
                                                  http://www.catb.org/jargon/html/p-convention.html
                                                  Ответить
                                          • >> Lua создавался как язык для конфигурирования изначально.
                                            Изначально этот язык разрабатывался по заказу petrobras для их них ПО.
                                            Ответить
                                  • Взять хотя бы CMake. Там ведь есть целый язык программирования с дебилоидным синтаксисом и невнятной семантикой. Дажу унылая Луа была бы гораздо удобнее, чем это говнище.
                                    Ответить
                                    • >> с дебилоидным синтаксисом и невнятной семантикой
                                      Вот ты сейчас описал примерно все известные мне DSLи:)

                                      Особенно бывает прикольно когда берешь CLion (Intellij для сей) и хочешь сделать проект из трех .c и одного .h файла. И кажется на обычном Make это написать в 2 строчки, но CLion хочет CMake (он по нему конфигурируется, так же как Android Studio по gradle) и начинается все эти target_include_directories.

                                      С другой стороны нормальные, кросс-платформенные, и при этом декларативные по большей части способы описания сборки проекта мне не известны. Все говно
                                      Ответить
                              • Писал однажды тетрис под sbcl. Горы легаси говна в языке после крестов уже не так пугают. А в остальном -- вполне няшно, да и интеграция с емаксом неплохая.
                                Ответить
                                • > А в остальном -- вполне няшно, да и интеграция с емаксом неплохая.

                                  Связка Emacs с CL просто офигенно, крестам такая крутизна и не снилась. Инкрементальная компиляция, компиляция отдельных функций, просмотр кода, сгенерированного компилятором из функции, офигенский дебаггер, ИНТЕРАКТИВНОЕ РАСКРЫТИЕ МАКРОСОВ, КАРЛ.

                                  Ты использовал paredit или lispy? Требуется время, чтобы к ним прывыкнуть, но оно того стоит. Без них редактировать лисп это как питон в блокноте пробелами выравнивать.
                                  Ответить
                                  • Не, я в стандартном режиме писал. Я же не умею юзать емакс.
                                    Ответить
                              • З.Ы. Кмк, динамическая типизация вполне пригодна для домашних проектиков.

                                Мне было бы влом писать демона аниме, cli для отладки arm'овской платы и ассемблер для своего проца под циклоняшку на чём-то с типизацией... А на питоне хуяк-хуяк и можно юзать. Правда лучше этот код никому не показывать...
                                Ответить
                                • Демона аниме?
                                  Ответить
                                  • Херня, которая убирает лишние дорожки, прожигает сабы, конвертит в xvid и заливает на айпад.

                                    Мне же лень сходить и купить нормальный планшет...
                                    Ответить
                                    • А что такое циклоняша?

                                      P.S. А почему демон? Он что, в фоне работает и ждёт когда ты с торрентов докачаешь тайтл?
                                      Ответить
                                      • Terasic DE0 Nano с Cyclone IV на борту.
                                        Ответить
                                      • > ждёт
                                        Скорее из-за его уёбищной веб-морды. Ждать докачки следующей серии можно было бы и в шелл скрипте.
                                        Ответить
                                    • > Мне же лень сходить и купить нормальный планшет...
                                      Лень – двигатель прогресса, но она же может его тормозить. Главное, чтобы было не лень запилить телепорт, который телепортнёт тебя в магазин електронеки, а ещё лучше – который телепортнёт планшет к тебе домой.
                                      Ответить
                                • >>хуяк

                                  Вот о чем я и говорю: скриптовые языки идеальны для написания скриптов автоматизации и glue кода, а не для сложной бизнеслогики высконагруженного приложения
                                  Ответить
                                • > ассемблер для своего проца под циклоняшку
                                  http://wall.org/~lewis/2013/10/15/asm-monad.html
                                  
                                  https://wiki.haskell.org/wikiupload/1/14/TMR-Issue6.pdf 
                                  (Assembly: Circular Programmingwith Recursive do)
                                  Ответить
                                  • http://wall.org/~lewis/portfolio.html
                                    >Skills
                                    >…
                                    >I can do web design pretty well (see this website)

                                    ))
                                    Ответить
                                    • > this website

                                      (ノ◕ヮ◕)ノ*:・゚✧
                                      madskillz
                                      Ответить
                                      • Роман, я там тебя про HHKB спрашивал, просил обзорчик запилить, ты проигнорил или не заметил?
                                        Ответить
                                        • > просил обзорчик запилить, ты проигнорил или не заметил?
                                          Тут чтоли http://govnokod.ru/22444 ?
                                          Что-то снова перечитал, ничего не нашёл.

                                          Я поработал с ней пару месяцев на работе, потом купил такую же домой, юзаю со всеми компьютерами, за которыми работаю.

                                          Если коротко, то
                                          + Компактная, занимает мало места, удобнее тянуться до мыши.
                                          ⇒ Удобно носить на хакаторы.
                                          + Backspace (Delete) рядом с Enter, очень удобно, быстро привыкаешь.
                                          + Topre доставляет, приятные ощущения и звук от нажатия (субъективно).
                                          - Поначалу сильно не хватает второго Ctrl, не все хоткеи удобно набирать вслепую.
                                          • Нужно время, чтобы привыкнуть к работе со стрелками, Home, End, вот это всё.

                                          В общем, сильно на любителя, кто-то боготворит, кто-то обсирает. Если тебе хочется выбросить кучу бабла на клавиатуру с Topre, тебе, наверное, больше подойдёт Real Force [1].
                                          [1] https://elitekeyboards.com/products.php?sub=topre_keyboards,rftenkeyless&pid=rf_se07t0
                                          Ответить
                                          • > Тут чтоли http://govnokod.ru/22444 ?

                                            Вот же
                                            https://govnokod.ru/24063#comment422500

                                            Спасибо, что ответил.

                                            > Если тебе хочется выбросить
                                            Да у меня денег-то нет, но ххкб мне очень нравится по всем признакам.
                                            Ответить
                                    • Там не только у него madskillz:

                                      http://www.wall.org/~larry/
                                      Ответить
                                      • > Web and CGI programming
                                        > I haven't done much of this. (Consider how lousy this web page is.) Consult the appropriate webpage.

                                        Как же смешно. Особенно 404 по ссылке на «my Perl page».
                                        Ответить
                                  • > http://wall.org/~lewis/2013/10/15/asm-monad.html
                                    - генереция ASM'а из Хачкеля для работы с NES? Я правильно прочитал?
                                    Ответить
                                    • > Я правильно прочитал?

                                      Именно. Там ещё предыдущая статья есть с мотивацией

                                      http://www.wall.org/~lewis/2013/10/03/inverting.html

                                      Rather than using a compiler for a low level language to generate a low level program, it is possible to use a high level language as the compiler itself, creating a high level program that outputs the low level program when it runs.
                                      Ответить
                                      • > high level program that outputs the low level program
                                        У этого подхода плюс ещё в том, что можно юзать циклы и функции high-level языка в качестве макросов. И это намного удобнее, чем учить/писать очередной говно-макро-препроцессор для асма... В общем-то поэтому я и пилил асм как DSL на питоне а не как транслятор из текста.
                                        Ответить
                                        • Можно было это всё хуйнуть на макросах в fasm'е.
                                          Ответить
                                          • > на макросах в fasm
                                            Да ну. Макросы там намного слабее какого-нибудь "PHP" (в плане библиотек и читабельности, если не по тьюрингу). Да и всякие таблички с синусами, портянки кода для криптушни и прочую хрень через нормальный язык генерить всяко удобнее чем через макросы.
                                            Ответить
                                  • > asm monad
                                    Хм, выглядит даже проще, чем на питоне.
                                    Ответить
                                • Кстати, о циклоняшах. FPGA можно перепрограммировать прямо во время работы схемы? Если можно, то при соответствующей обвязке можно сделать самомодифицирующуюся схему.
                                  Ответить
                                  • > самомодифицирующуюся

                                    Восстание машин?
                                    Ответить
                                    • Настоящее восстание машин будет, если циклоняшу подключить к RepRap.
                                      Ответить
                                      • Собственно, если роботы будут достаточно простыми, смогут сами добывать энергию для существования (например, с помощью солнышка) и смогут воспроизводить сами себя из подручных материалов, причем с определенной вероятностью мутации, то естественный отбор сделает своё.
                                        Ответить
                                  • > FPGA можно перепрограммировать прямо во время работы схемы
                                    Можно, но на время конфигурирования она отключится от внешнего мира и потеряет состояние регистров. Т.е. в одиночку она сама себя не сможет законфигурить, что-нибудь снаружи должно помогать (флешка, коконтроллер, вторая циклоняша и т.п.).
                                    Ответить
                                    • Схема может потерять состояние триггеров, которые даже не разбирали? Т. е. после переконфигурации следует считать все уровни неопределёнными (кроме тех, на которые явно что-то подали)?
                                      Ответить
                                      • > неопределёнными
                                        Вполне определёнными. LUT'ы (таблички с N входами и 1 выходом из которых на FPGA строят логику), оперативка и роутинг между элементами настраиваются согласно прошивке. А все триггеры тупо резетятся на 0.

                                        В теории, если бы оно могло не резетить триггеры на время конфигурирования, можно было бы и кусочками патчить... Один хер на FPGA строят только синхронные схемы, а для них достаточно было бы притормозить clock на время перезаливки, чтобы в триггеры мусор не попал. Ну и i/o отключить от внешнего мира, чтобы там ничего не распидорасило. Но по спеке -- только полностью и со сбросом.
                                        Ответить
                                      • З.Ы. А не, не получится даже в теории перезаливать конфиг без потери стейта...

                                        Если я правильно понимаю устройство FPGA, то конфиг там хранится в длинной цепочке триггеров, размазанной по всему чипу. Ну и конфиг вдвигается в неё бит за битом с одного конца этой цепочки.

                                        Вряд ли разрабы стали тратить вдвое больше триггеров для атомарного коммита всей этой цепочки в конце заливки. Это дорого и никому нинужно (на моей циклоняшке конфиг весит 700Кб, на старших моделях там мегабайты). Поэтому все соединения между элементами и LUT'ы пидорасит по полной во время заливки. Но при штатной заливке на это всем похуй -- триггеры в резете, i/o в отключке.

                                        И трабла в том, что у триггеров (которые юзаются при нормальной работе, а не для хранения конфига) есть входы асинхронного сброса. Во время загрузки на них может пробиться единичка и мы потеряем стейт.
                                        Ответить
          • C++ — для работы, "PHP"[1] — для души?
            На какие жертвы только не приходится идти настоящим программистам в душе ради денег, даже для работы писать на языках калькуляторов…

            [1] — в данной формулировке очень важно ставить именно такие кавычки: "PHP"
            Ответить

    Добавить комментарий