Code Mining
898 subscribers
80 photos
4 videos
8 files
156 links
ML4Code во всей красе, анализ кода и артефактов: лицензии, уязвимости, процессы. Комментарии к актуальным и не очень новостям, аналитика, эпизодический авторский контент, мемасики.

При поддержке: ods.ai, @codescoring
По вопросам — @alsmirn
Download Telegram
Эзотерика в программировании и лайвкодинг

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

Возможно вы сталкивались с такими как 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.

#языкибываютразные
jq - легковесный json-процессор

Как быстро поработать с 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 и 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 может помочь в анализе текстов лицензий? Обсудим в комментариях?
sed — Stream EDitor

Продолжая рубрику #языкибываютразные, напишем про ещё один прекрасный язык и больше-таки инструмент, sed.

Разработан в 1973-1974 годах сотрудником Bell Labs Ли Макмэхоном под UNIX. Синтаксис с тех пор почти не изменился, а востребванность только возросла ;).

Суть его в том, чтобы обрабатывать потоковые данные, как понятно из названия. На вход данные, управляющие конструкции языка говорят, что с ними делать, на выходе модифицированные данные.

Всё просто. Отфильтровать, заменить/удалить по шаблону или регулярному выражению, провести хитрые перестановки, это то, зачем вам может быть полезен sed.

Как и всегда, welcome to man pages, но есть и полезные статейки. Например по-русски тут или хорошая коллекция вариантов ежедневного применения на github.
Продолжая рубрику #языкибываютразные, напишем про ещё один внезапный язык, Rockstar.

Язык с динамической типизацией, в котором исходный код представляется в виде текстов похожих на песни.

Вдохновлен рок-хэви-хэйр-металлическими балладами 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



Продолжение тут, больше примеров здесь. Надеемся, что вам весело ;).