- 1
https://stackoverflow.com/questions/51521158/in-python-why-does-0xbin-return-false
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
https://stackoverflow.com/questions/51521158/in-python-why-does-0xbin-return-false
Свежий обосрамс питона
Я тоже, потому что у "PHP" не бывает свежих обосрамсов, все они древние как говно, их все давно знают и никто с этим ничего не делает. )))
https://govnokod.ru/23384
Потому что я там часто в гостях бываю.
Ну не знаю... А что если по профессии ты унылый сишкошлёп ракетных прошивок, а после работы ты из программиста на языке калькуляторов превращаешься в «PHP»-бога?
- достаточно переодеться в телефонной будке
рhрванилу
> щас в продакшене используются лиспы?
Да. 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?
Можно, но зачем? Нужны макросы? Или просто лисп ради лиспа?
- интересуюсь практиками встраивания DSL'ей
Если скрипты будут писать программисты, они тебя задолбают вопросом "а почему не X?" и поменяют язык скриптования как только ты отвернёшься.
Кстати, в Dyalog APL они есть.
Читать доки полезно, но гораздо менее полезно, чем делать что-то самому.
Меня в своё время соблазнила модульная модель, но ты как-то сказал, что в ML (кажется?) она намного лучше, но ещё и на ML моих моральных сил не хватит после
и всякого такого.
А вот найти какую-то клёвую штуку для скриптования в перспективе было бы полезно. В мобайле оно практически не нужно, конечно, за пределами гейдева, но всё же. Но сходу ничего, кроме AngelScript, на ум не приходит.
Кстати, кто-то щупал MPL от JetBrains?
MPS мож?
Imho, идея DSLей, столь популярная в нулевые, не выстрелила.
Ибо создать язык программирования (пусть даже и урезанного) -- сложно. Очень мало у кого это получается сделать красиво. Потому все DSL неюзабельное говно.
Попытки же сделать DSL из fancy языка (Vagrant и Puppet на Ruby, Gradle на Groovy) еще более пичальны: получается не "простой и красивый язык конфигурации" а неебически сложное API, использующее редкоземельные и сложные конструкции языка, писать на котором обдуманно можно только очень хорошо зная язык.
Высокоуровневый заембеженный язык типа lua это ок.
А синтаксис грэдла или вагранта это буэээ
(это всё было имхо)
Не понял, чем "высокоуровневый заембеженный язык типа lua" принципиально отличается от "DSL из fancy языка". Впрочем, сам считаю, что брать для DSL очередной мунспик значит не уважать своих пользователей (и +1 причина, почему я не люблю, например, cocoapods). Значит ли это, что DSL должен быть декларативным?
Кроме того он достаточно простой, потому месяца ковыряний с lua достаточно чтобы прочитать на нем любой код.
DSLже который сделал программист Вася используя прикольные средства Ruby или Groovy обычно выглядит вот так:
.
Чтобы понять что здесь написано надо знать Ruby, иначе не понятно что такое do с палочками и что вообще происходит.
Я-то понимаю что вызывается post_install, ему передается блок от параметра installer который делает require и вызывает patch у класса Patcher в модуле Amimono.
А если бы я руби не знал то это был бы кромешный песец.
Вот язык конфигурации nginx или apache или postgres обычный пользователь может понять потому что он простой. А эти языки не простые, не логичные, не консистентные. Потому что их создавали не дизайнеры языков.
>>. Значит ли это, что DSL должен быть декларативным?
Если у тебя полностью декларативный, не тьюрингполный язык типа языка ini файлов или JSON/TOML/YAML то всё отлично.
Его поймет пользователь. Но тогда это не будет DSL, имхо.
DSL это полноценный ЯП, просто заточенный для решения каких-то определенных задач, имеющий для них столько сахара что в итоге простые вещи можно описывать декларативно.
Вот еще пример (без знания гредла выглядит как набор букв): почему где-то есть скобки, а где-то нет?
- откровенно говоря, замени здесь lua на ruby и смысл не изменится. Наверное, дело всё же в синтаксисе, в первую очередь
> месяца ковыряний с lua
- многовато ты взял. Ты думаешь, что руби/лисп/питон за месяц ковыряний невозможно выучить до той степени, чтобы понимать install-файлы? Вот если ты берёшь тулзу и можешь её скрипты поправить через час ковыряния, то это показатель.
Я не знаю, может в lua действительно всё настолько просто, а ты банально преувеличиваешь ради красного словца.
Ну, на самом деле изменится потому что синтаксис lua проще чем у ruby или perl, например. Но в целом же любой полноценный язык изучить проще (и помощь по нему найти проще) чем DSL который вчера придумали.
>>Вот если ты берёшь тулзу и можешь её скрипты поправить через час ковыряния, то это показатель
Строковые литералы можно научиться менять через 2 минуты, но вот всерьез понять что написано и поправить -- это сложнее. И я считаю что никакие известные мне DSLи такой возможности не давали.
Ты же сам видел pods, разве не знающий Ruby может в них всерьез что-то понять? Ну мунспик же.
>> может в lua действительно всё настолько просто
Lua создавался как язык для конфигурирования изначально, так что мне кажется что он проще чем Ruby:) И уж точно конфиг на луа будет проще обычному (не знающему ни Lua ни Ruby) программисту чем те же pods кмк.
- пиздатый термин, мне нравится.
Ну да, я ж в принципе не спорю с основной твоей идеей, тот же Podfile обычно просто копипастят и потом строчки добавляют, не вникая. Вот у Carthage уже всё намного проще (но там и формат совсем тривиальный). А так я тоже когда-то такое делал, только на Питоне. Делаешь скрипт, который грузится твоим фреймворком, прямо система плагинов ёпта. В некоторых случаях может быть оправдано.
Кстати, читал недавно, что Naughty Dog по слухам используют Racket в качестве скриптового языка для своих игр. Интересный выбор. Правда, я подозреваю, что там не чистый Racket, а какой-то язык на его основе, который они замутили макросами и парсером.
Это не я придумал, это сам автор языка его так называет: его придумали чтобы конфигурировать на нем софт, потому там и таблицы чтобы удобнее описывать:
>>, тот же Podfile обычно просто копипастят и потом строчки добавляют, не вникая
вот да:)
>> по слухам используют Racket в качестве скриптового языка для своих игр
Будет забавно если в какой-то момент все люди начнут использовать диалекты лиспа в качестве конфигов. Вернутся, так сказать, к истокам (вспоминая emacs)). Не думаю что будет хуже чем DSLи на руби:)
JaneStreet так делают, у них sexp это основной формат сериализации и конфигурации. Это, в частности, послужило причиной того, что билд-файлы для OCaml (система сборки dune) описываются в виде sexp [1]. Разумеется, билд-файлы для Common Lisp (система сборки ASDF) всегда использовали sexp [2].
Изначально этот язык разрабатывался по заказу petrobras для их них ПО.
Вот ты сейчас описал примерно все известные мне DSLи:)
Особенно бывает прикольно когда берешь CLion (Intellij для сей) и хочешь сделать проект из трех .c и одного .h файла. И кажется на обычном Make это написать в 2 строчки, но CLion хочет CMake (он по нему конфигурируется, так же как Android Studio по gradle) и начинается все эти target_include_directories.
С другой стороны нормальные, кросс-платформенные, и при этом декларативные по большей части способы описания сборки проекта мне не известны. Все говно
Связка Emacs с CL просто офигенно, крестам такая крутизна и не снилась. Инкрементальная компиляция, компиляция отдельных функций, просмотр кода, сгенерированного компилятором из функции, офигенский дебаггер, ИНТЕРАКТИВНОЕ РАСКРЫТИЕ МАКРОСОВ, КАРЛ.
Ты использовал paredit или lispy? Требуется время, чтобы к ним прывыкнуть, но оно того стоит. Без них редактировать лисп это как питон в блокноте пробелами выравнивать.
Мне было бы влом писать демона аниме, cli для отладки arm'овской платы и ассемблер для своего проца под циклоняшку на чём-то с типизацией... А на питоне хуяк-хуяк и можно юзать. Правда лучше этот код никому не показывать...
Мне же лень сходить и купить нормальный планшет...
P.S. А почему демон? Он что, в фоне работает и ждёт когда ты с торрентов докачаешь тайтл?
Ух ты, в честь Тараса борду назвали.
Скорее из-за его уёбищной веб-морды. Ждать докачки следующей серии можно было бы и в шелл скрипте.
Лень – двигатель прогресса, но она же может его тормозить. Главное, чтобы было не лень запилить телепорт, который телепортнёт тебя в магазин електронеки, а ещё лучше – который телепортнёт планшет к тебе домой.
Вот о чем я и говорю: скриптовые языки идеальны для написания скриптов автоматизации и glue кода, а не для сложной бизнеслогики высконагруженного приложения
>…
>I can do web design pretty well (see this website)
)) >Skills
(ノ◕ヮ◕)ノ*:・゚✧
madskillz
Тут чтоли http://govnokod.ru/22444 ?
Что-то снова перечитал, ничего не нашёл.
Я поработал с ней пару месяцев на работе, потом купил такую же домой, юзаю со всеми компьютерами, за которыми работаю.
Если коротко, то
+ Компактная, занимает мало места, удобнее тянуться до мыши.
⇒ Удобно носить на хакаторы.
+ Backspace (Delete) рядом с Enter, очень удобно, быстро привыкаешь.
+ Topre доставляет, приятные ощущения и звук от нажатия (субъективно).
- Поначалу сильно не хватает второго Ctrl, не все хоткеи удобно набирать вслепую.
• Нужно время, чтобы привыкнуть к работе со стрелками, Home, End, вот это всё.
В общем, сильно на любителя, кто-то боготворит, кто-то обсирает. Если тебе хочется выбросить кучу бабла на клавиатуру с Topre, тебе, наверное, больше подойдёт Real Force [1].
Вот же
https://govnokod.ru/24063#comment422500
Спасибо, что ответил.
> Если тебе хочется выбросить
Да у меня денег-то нет, но ххкб мне очень нравится по всем признакам.
> I haven't done much of this. (Consider how lousy this web page is.) Consult the appropriate webpage.
Как же смешно. Особенно 404 по ссылке на «my Perl page».
- генереция 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 языка в качестве макросов. И это намного удобнее, чем учить/писать очередной говно-макро-препроцессор для асма... В общем-то поэтому я и пилил асм как DSL на питоне а не как транслятор из текста.
Да ну. Макросы там намного слабее какого-нибудь "PHP" (в плане библиотек и читабельности, если не по тьюрингу). Да и всякие таблички с синусами, портянки кода для криптушни и прочую хрень через нормальный язык генерить всяко удобнее чем через макросы.
Хм, выглядит даже проще, чем на питоне.
Восстание машин?
Можно, но на время конфигурирования она отключится от внешнего мира и потеряет состояние регистров. Т.е. в одиночку она сама себя не сможет законфигурить, что-нибудь снаружи должно помогать (флешка, коконтроллер, вторая циклоняша и т.п.).
Вполне определёнными. LUT'ы (таблички с N входами и 1 выходом из которых на FPGA строят логику), оперативка и роутинг между элементами настраиваются согласно прошивке. А все триггеры тупо резетятся на 0.
В теории, если бы оно могло не резетить триггеры на время конфигурирования, можно было бы и кусочками патчить... Один хер на FPGA строят только синхронные схемы, а для них достаточно было бы притормозить clock на время перезаливки, чтобы в триггеры мусор не попал. Ну и i/o отключить от внешнего мира, чтобы там ничего не распидорасило. Но по спеке -- только полностью и со сбросом.
Если я правильно понимаю устройство FPGA, то конфиг там хранится в длинной цепочке триггеров, размазанной по всему чипу. Ну и конфиг вдвигается в неё бит за битом с одного конца этой цепочки.
Вряд ли разрабы стали тратить вдвое больше триггеров для атомарного коммита всей этой цепочки в конце заливки. Это дорого и никому нинужно (на моей циклоняшке конфиг весит 700Кб, на старших моделях там мегабайты). Поэтому все соединения между элементами и LUT'ы пидорасит по полной во время заливки. Но при штатной заливке на это всем похуй -- триггеры в резете, i/o в отключке.
И трабла в том, что у триггеров (которые юзаются при нормальной работе, а не для хранения конфига) есть входы асинхронного сброса. Во время загрузки на них может пробиться единичка и мы потеряем стейт.
На какие жертвы только не приходится идти настоящим программистам в душе ради денег, даже для работы писать на языках калькуляторов…
[1] — в данной формулировке очень важно ставить именно такие кавычки: "PHP"