Эзотерика в программировании и лайвкодинг
Помимо всяких объектно-ориентированных, процедурных, функциональных и т.п. языков программирования, существуют эзотерические языки программирования призванные исследовать границы возможностей разработки языков программирования, доказать концепцию или в качестве произведения программного искусства (или шуточки всякие).
Возможно вы сталкивались с такими как Brainfuck или LOLCODE.
Мы вот тут наткнулись на язычок Orca, с крутой командой разработки и годной философией :).
Orca написана на языке Uxntal, тоже интересный сорт человеко-читаемого ассемблера, который также заслуживает отдельного поста.
Зачем? Для лайвкодинга, например для музыкописателей, примерчик можно посмотреть на видео тут или тут.
Синтаксис кайфовенький, прям. Одна команда - одна буква:
#языкибываютразные
Помимо всяких объектно-ориентированных, процедурных, функциональных и т.п. языков программирования, существуют эзотерические языки программирования призванные исследовать границы возможностей разработки языков программирования, доказать концепцию или в качестве произведения программного искусства (или шуточки всякие).
Возможно вы сталкивались с такими как Brainfuck или LOLCODE.
Мы вот тут наткнулись на язычок Orca, с крутой командой разработки и годной философией :).
Orca написана на языке Uxntal, тоже интересный сорт человеко-читаемого ассемблера, который также заслуживает отдельного поста.
Зачем? Для лайвкодинга, например для музыкописателей, примерчик можно посмотреть на видео тут или тут.
Синтаксис кайфовенький, прям. Одна команда - одна буква:
A add(a b): Outputs sum of inputs.Ну няка же, да?
B subtract(a b): Outputs difference of inputs.
C clock(rate mod): Outputs modulo of frame.
D delay(rate mod): Bangs on modulo of frame.
#языкибываютразные
Cue Data Validation Language
Для тех, кто много работает с конфигами и иными мета-данными в форматах json, yaml и т. п. весьма себе может пригодиться язык CUE (сокращение от Configure Unify Execute).
Может применяться для type-чекинга, задания и проверки схемы данных, кодогенерации (Go, Protobuf), конвертации yaml<->json, поиска по структурам и скриптования всякого.
Можно решать всякие частные задачки, например валидация конфигураций этих ваших Кубернетесов.
Документация тута. Написан на Go, код можно посмотреть на Github.
#языкибываютразные
Для тех, кто много работает с конфигами и иными мета-данными в форматах json, yaml и т. п. весьма себе может пригодиться язык CUE (сокращение от Configure Unify Execute).
Может применяться для type-чекинга, задания и проверки схемы данных, кодогенерации (Go, Protobuf), конвертации yaml<->json, поиска по структурам и скриптования всякого.
Можно решать всякие частные задачки, например валидация конфигураций этих ваших Кубернетесов.
Документация тута. Написан на Go, код можно посмотреть на Github.
#языкибываютразные
jq - легковесный json-процессор
Как быстро поработать с json не прибегая к написанию кода на python (ну например)?
https://stedolan.github.io/jq/
Обалденная тула, которая экономит кучу времени людям работающим со слабоструктурированными машиночитаемыми данными.
Простейший язык запросов в командной строке (хоть к нему нужно и привыкнуть), с хорошей документаицей.
Те, кто работал с
Пара примеров, и вперед, упрощать себе жизнь!
Выбор по ключу
Да, есть онлайн-чекалка.
Добавим ещё полезную обучалку.
#языкибываютразные
Как быстро поработать с json не прибегая к написанию кода на python (ну например)?
https://stedolan.github.io/jq/
Обалденная тула, которая экономит кучу времени людям работающим со слабоструктурированными машиночитаемыми данными.
Простейший язык запросов в командной строке (хоть к нему нужно и привыкнуть), с хорошей документаицей.
Те, кто работал с
sed
или awk
должны особенно проникнуться ;). Пара примеров, и вперед, упрощать себе жизнь!
Выбор по ключу
jq '.foo'Объединение списков
Input {"foo": 42, "bar": "less interesting data"}
Output 42
jq '.a + .b'Можно многое, короче.
Input {"a": [1,2], "b": [3,4]}
Output [1,2,3,4]
Да, есть онлайн-чекалка.
Добавим ещё полезную обучалку.
#языкибываютразные
AWK
Мы уже упоминали
Многие относятся к AWK как к тулзе, но немногие знают, что на нем можно прям полноценно писать программы. Весь синтаксис описан в man pages, с огромным количеством примеров и пояснений. Открываешь и пишешь.
Первая версия была разработана ещё в далеком 1977 году небезызвестными создателями: Aho, Weinberger и Kernighan. Да, есть ещё GNU версия, которая называется GAWK, но по сути различия в реализации минимальные.
Что важно знать. Если вам нужно обработать текстовый файл, то далеко не всегда нужно хвататься на
Намного быстрее написать one-liner на awk. Умение в синтаксис тренируется за пару вечеров, а потом экономит вам килограммы времени!
Кто не готов читать маны :/, то неплохие статьи есть на хабре, opennet и особенно здесь, по-английски.
#языкибываютразные
Мы уже упоминали
awk
и sed
, так вот, сегодня про первый ;).Многие относятся к AWK как к тулзе, но немногие знают, что на нем можно прям полноценно писать программы. Весь синтаксис описан в man pages, с огромным количеством примеров и пояснений. Открываешь и пишешь.
Первая версия была разработана ещё в далеком 1977 году небезызвестными создателями: Aho, Weinberger и Kernighan. Да, есть ещё GNU версия, которая называется GAWK, но по сути различия в реализации минимальные.
Что важно знать. Если вам нужно обработать текстовый файл, то далеко не всегда нужно хвататься на
python
или другие языки, кажущиеся весьма подходящими и для простых задач. Также удобно использовать awk
, как и sed
в командной строке при соединении в pipe
.Намного быстрее написать one-liner на awk. Умение в синтаксис тренируется за пару вечеров, а потом экономит вам килограммы времени!
Кто не готов читать маны :/, то неплохие статьи есть на хабре, opennet и особенно здесь, по-английски.
#языкибываютразные
Catala - A Programming Language for the Law
И завершая неделю рубрики #языкибываютразные, хотим познакомить вас с предметно-ориентированным языком (DSL), который может заинтересовать тех, кто наводит мосты между юридической формалистикой и миром программирования.
https://catala-lang.org/
Несмотря на относительно смешное, особенно в контексте применения, название, язык назван в честь профессора Пьера Катала, пионера легалтеха в конце 60х годов.
Возможности:
- унифицировать определения;
- проводить формализацию и проверку законов;
- производить соответствующие расчеты и проверку логики.
Язык фундаментален, разрабатывается группой специалистов из French National Research Institute for Computer Science (Inria) и Microsoft Research. Французские корни повсюду, в примерах, в документации, в текстах коммитов, но не сильно мешает восприятию.
Реализация: OCaml & Python.
Github | Syntax | Paper
ЗЫ: вот мы тут задумались, а насколько Catala может помочь в анализе текстов лицензий? Обсудим в комментариях?
И завершая неделю рубрики #языкибываютразные, хотим познакомить вас с предметно-ориентированным языком (DSL), который может заинтересовать тех, кто наводит мосты между юридической формалистикой и миром программирования.
https://catala-lang.org/
Несмотря на относительно смешное, особенно в контексте применения, название, язык назван в честь профессора Пьера Катала, пионера легалтеха в конце 60х годов.
Возможности:
- унифицировать определения;
- проводить формализацию и проверку законов;
- производить соответствующие расчеты и проверку логики.
Язык фундаментален, разрабатывается группой специалистов из French National Research Institute for Computer Science (Inria) и Microsoft Research. Французские корни повсюду, в примерах, в документации, в текстах коммитов, но не сильно мешает восприятию.
Реализация: OCaml & Python.
Github | Syntax | Paper
ЗЫ: вот мы тут задумались, а насколько Catala может помочь в анализе текстов лицензий? Обсудим в комментариях?
sed — Stream EDitor
Продолжая рубрику #языкибываютразные, напишем про ещё один прекрасный язык и больше-таки инструмент,
Разработан в 1973-1974 годах сотрудником Bell Labs Ли Макмэхоном под UNIX. Синтаксис с тех пор почти не изменился, а востребванность только возросла ;).
Суть его в том, чтобы обрабатывать потоковые данные, как понятно из названия. На вход данные, управляющие конструкции языка говорят, что с ними делать, на выходе модифицированные данные.
Всё просто. Отфильтровать, заменить/удалить по шаблону или регулярному выражению, провести хитрые перестановки, это то, зачем вам может быть полезен
Как и всегда, welcome to man pages, но есть и полезные статейки. Например по-русски тут или хорошая коллекция вариантов ежедневного применения на github.
Продолжая рубрику #языкибываютразные, напишем про ещё один прекрасный язык и больше-таки инструмент,
sed
.Разработан в 1973-1974 годах сотрудником Bell Labs Ли Макмэхоном под UNIX. Синтаксис с тех пор почти не изменился, а востребванность только возросла ;).
Суть его в том, чтобы обрабатывать потоковые данные, как понятно из названия. На вход данные, управляющие конструкции языка говорят, что с ними делать, на выходе модифицированные данные.
Всё просто. Отфильтровать, заменить/удалить по шаблону или регулярному выражению, провести хитрые перестановки, это то, зачем вам может быть полезен
sed
.Как и всегда, welcome to man pages, но есть и полезные статейки. Например по-русски тут или хорошая коллекция вариантов ежедневного применения на github.
Продолжая рубрику #языкибываютразные, напишем про ещё один внезапный язык, Rockstar.
Язык с динамической типизацией, в котором исходный код представляется в виде текстов похожих на песни.
Вдохновлен рок-хэви-хэйр-металлическими балладами 80-90-х годов 🎸🎸🎸.
Сайт | Спека
Есть множество реализаций, в т. ч. на Python, JS, Java, OCaml, etc.
Пример кода приближенного вычисления числа π:
…
Продолжение тут, больше примеров здесь. Надеемся, что вам весело ;).
Язык с динамической типизацией, в котором исходный код представляется в виде текстов похожих на песни.
Вдохновлен рок-хэви-хэйр-металлическими балладами 80-90-х годов 🎸🎸🎸.
Сайт | Спека
Есть множество реализаций, в т. ч. на Python, JS, Java, OCaml, etc.
Пример кода приближенного вычисления числа π:
My life was a mushroom cloud, then
it was nothing
Sin is unquenchable
My cell was empty
Your love was a jackhammer shaking the bars
Your life is a fungus
Your love is mycorrhizal
My life was empty without your love
Until your life is my life,
build my life up
Put your love into Me
Put my life into the song,
until your love is stronger than the song
Put the song of Me into Me
Knock the song down
Put your love into You
…
Продолжение тут, больше примеров здесь. Надеемся, что вам весело ;).