Язык для наколенной разработки для себя
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 25.12.20 10:19
Оценка:
Периодически возникает желание по-быстрому накидать что-нибудь для разовой или эпизодической обработки текста, XML/HTML, баз данных и т.п. Сугубо для себя, без перспективы выпуска на широкую публику. Что-то делаю на привычном C++, что-то на JavaScript, несколько раз пытался делать на PowerShell, но не могу перебороть отвращения к его синтаксису.

Что сейчас есть из универсальных языков/сред для подобных целей — с богатым набором встроенных средств обработки разнородных данных (строки, списки, кортежи, множества, SqLite, HTTP и т.п.), и не слишком коряво выглядящим кодом?

Глядя на бешеную популярность Python, не могу понять, есть ли у него какие-либо явные преимущества перед тем же JavaScript. На нем действительно проще и быстрее писать наколенные поделки, или он так зашел чисто по причине низкого порога вхождения? Стоит ли браться за него всерьез, несмотря на очень непривычную идею с отступами?
Re: Язык для наколенной разработки для себя
От: Andrey Vorobyev Россия http://v0an.lj.ru/?from=myrsdn
Дата: 25.12.20 10:32
Оценка:
Вас устраивает жс, но смотрите в сторону питона?
Из-за каких-то библиотек, которые есть в питоне, но нет в жс?

Я думаю, что ни жс, ни питон никуда не денутся и будут в топе оба,
выбор из них — вкусовщина.
Re: Язык для наколенной разработки для себя
От: kov_serg Россия  
Дата: 25.12.20 10:40
Оценка: +1 :)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Периодически возникает желание по-быстрому накидать что-нибудь для разовой или эпизодической обработки текста, XML/HTML, баз данных и т.п. Сугубо для себя, без перспективы выпуска на широкую публику. Что-то делаю на привычном C++, что-то на JavaScript, несколько раз пытался делать на PowerShell, но не могу перебороть отвращения к его синтаксису.

По синтаксису lua не вызывает отвращения.

ЕМ>Что сейчас есть из универсальных языков/сред для подобных целей — с богатым набором встроенных средств обработки разнородных данных (строки, списки, кортежи, множества, SqLite, HTTP и т.п.),

Вы не поверите по всем параметрам идеально подходит PHP
ЕМ> и не слишком коряво выглядящим кодом?
Вам шашечки или ехать? Как будет выглядеть код зависит только от вас.

ЕМ>Глядя на бешеную популярность Python, не могу понять

Просто есть готовые решения почти под любую задачу.
Re[2]: Язык для наколенной разработки для себя
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 25.12.20 10:53
Оценка:
Здравствуйте, Andrey Vorobyev, Вы писали:

AV>Вас устраивает жс, но смотрите в сторону питона?


Не сказал бы, что JS меня устраивает — просто по совместительству я его иногда применяю на сайте, плюс синтаксис привычный. А если привыкать к Python, то это будет явно тупиковый процесс, исключительно для "домашнего применения".

В идеале хотелось бы именно удобного средства для макетирования — чтобы из коробки было как можно больше возможностей для выражения идеи/алгоритма, пусть бы оно даже было интерпретируемое и тормозное.
Re[2]: Язык для наколенной разработки для себя
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 25.12.20 10:56
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Как будет выглядеть код зависит только от вас.


Хм, и как же мне написать код для того же PowerShell, чтобы он не выглядел безвкусным нагромождением разнородных концепций?

ЕМ>>Глядя на бешеную популярность Python


_>Просто есть готовые решения почти под любую задачу.


А как там с набором выразительных средств в базовом комплекте? Или опять собирать библиотеки отовсюду?
Re: Язык для наколенной разработки для себя
От: Cyberax Марс  
Дата: 25.12.20 11:07
Оценка: +1
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Периодически возникает желание по-быстрому накидать что-нибудь для разовой или эпизодической обработки текста, XML/HTML, баз данных и т.п. Сугубо для себя, без перспективы выпуска на широкую публику. Что-то делаю на привычном C++, что-то на JavaScript, несколько раз пытался делать на PowerShell, но не могу перебороть отвращения к его синтаксису.

Go?
Sapienti sat!
Re[2]: Язык для наколенной разработки для себя
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 25.12.20 11:17
Оценка: +2
Здравствуйте, Cyberax, Вы писали:

C>Go?


Так он же вроде из коробки достаточно беден, как и C. Насколько я знаю, там нет ни множеств, ни многоуровневых списков/кортежей. Хочется чего-нибудь выразительного, типа "добавить к основному списку подсписок из пяти элементов", "если тип данного элемента числовой, то...", "если значение входит в заданное множество, то...".
Re[3]: Язык для наколенной разработки для себя
От: kov_serg Россия  
Дата: 25.12.20 11:40
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Хм, и как же мне написать код для того же PowerShell, чтобы он не выглядел безвкусным нагромождением разнородных концепций?

Это притенении к PowerShell или к конкретным скриптам?
https://stephanevg.github.io/powershell/class/module/DATA-How-To-Write-powershell-Modules-with-classes

_>>Просто есть готовые решения почти под любую задачу.

ЕМ>А как там с набором выразительных средств в базовом комплекте?
в базовом комплекте есть pip

ЕМ>Или опять собирать библиотеки отовсюду?

да. это язык склейки, он для этого и создавался.
Re[2]: Язык для наколенной разработки для себя
От: Pzz Россия https://github.com/alexpevzner
Дата: 25.12.20 12:16
Оценка:
Здравствуйте, Cyberax, Вы писали:

ЕМ>>Периодически возникает желание по-быстрому накидать что-нибудь для разовой или эпизодической обработки текста, XML/HTML, баз данных и т.п. Сугубо для себя, без перспективы выпуска на широкую публику. Что-то делаю на привычном C++, что-то на JavaScript, несколько раз пытался делать на PowerShell, но не могу перебороть отвращения к его синтаксису.

C>Go?

+1
Re[3]: Язык для наколенной разработки для себя
От: Pzz Россия https://github.com/alexpevzner
Дата: 25.12.20 12:27
Оценка: 12 (1)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Так он же вроде из коробки достаточно беден, как и C. Насколько я знаю, там нет ни множеств, ни многоуровневых списков/кортежей. Хочется чего-нибудь выразительного, типа "добавить к основному списку подсписок из пяти элементов", "если тип данного элемента числовой, то...", "если значение входит в заданное множество, то...".


Там есть map'ы (ассоциативные массивы), которые по совместительству могут использоваться, как множества. Заместо списков есть слайсы (такие "массивы", к которым можно дописывать в конец, и они сами растут, а можно вырезать субслайс "от и до").

Можно сделать коллекцию нетипизованных значений, и ветвиться по типу.

В операторе switch может быть перечень значений, как в C++ (но не обязательно констант, не как в C++), а может быть перечень условий.

Есть весьма богатая (хотя и несколько однобокая) стандартная библиотека, и есть много полезных запчастей, доступных с гитхаба.
Re: Язык для наколенной разработки для себя
От: Михaил  
Дата: 25.12.20 12:43
Оценка: 24 (2) +3
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Периодически возникает желание по-быстрому накидать что-нибудь для разовой или эпизодической обработки текста, XML/HTML, баз данных и т.п. Сугубо для себя, без перспективы выпуска на широкую публику. Что-то делаю на привычном C++, что-то на JavaScript, несколько раз пытался делать на PowerShell, но не могу перебороть отвращения к его синтаксису.


ЕМ>Что сейчас есть из универсальных языков/сред для подобных целей — с богатым набором встроенных средств обработки разнородных данных (строки, списки, кортежи, множества, SqLite, HTTP и т.п.), и не слишком коряво выглядящим кодом?


ЕМ>Глядя на бешеную популярность Python, не могу понять, есть ли у него какие-либо явные преимущества перед тем же JavaScript. На нем действительно проще и быстрее писать наколенные поделки, или он так зашел чисто по причине низкого порога вхождения? Стоит ли браться за него всерьез, несмотря на очень непривычную идею с отступами?


Уже больше года юзаю питон.
Преимущества:
1) куча готовых решений и библиотек, абсолютно любое нужное действие гуглится и делается обычно в несколько строк с нужной библиотекой.
2) Есть блокнот для прототипирования jupyter.
3) Также использовал его для backend программирования, как скриптовый язык он удобен.
4) весь DS перебрался на него (если нужно преобразовывать массивы данных).
5) код читается, как художественный текст, даже написанный годы назад.

Недостатки (для меня):
1) Тормозной pycharm (а в других средах без достойного autocompletion туговато, т.к. мозг не желает запоминать даже элементарные языковые конструкции и параметры, ибо редко их использую). В итоге собрал себе набор "готовых решений", и делаю копи-пасту.
2) Интерпретируемый, то есть часто об ошибке не знаете, пока исполнение кода не дойдет до конкретного места, в каком-нибудь if-else можно элементарно попустить баг. Есть "линтеры", но они не всегда помогают.
3) немного различный синтаксис питон2-питон3, некоторые библиотеки сделаны под 2-ю версию, что вносит неудобства. Ну и примеры из гугла иногда бывают только на питон2, хотя питона2 все меньше и меньше.
4) крайне кривая многопоточность-асинхронность, считайте, что он однопоточный.
5) в свое время намучился пакетным менеджером pip в юниксе. Вероятно, потому что не разобрался как и что там работает, но сам факт говорит о том, что подводных камней там хватает. Если хочется какой-нибудь пакет глобально установить в систему, то бывает возникают ошибки, какой-нибудь пакет из dependency рассчитан исключительно на другую версию питона (так у меня было с приложением fail2ban, например: в системе основной питон3, а ему надо питон2), или пакет после скачивания начинает собираться, ноутбук гудит как самолет по 10-15 минут. Вылетает ошибка, начинаешь гуглить, и нередко находятся нетривиальные решения. То где-то нужен sudo для глобальной установки пакета, а где-то не нужен.
6) концепция virtualenv и постоянное ее activate раздражает. Если ее почти всегда используют, сделали бы этот venv как js npm, чтобы все пакеты устанавливались по умолчанию в текущую директорию. Но нет, надо вручную создавать эту песочницу, не забыть активировать.
7) gui приложения делать можно, но крайне неудобно. Например, какой-нибудь обновляющийся в realtime график.

Отступы совершенно не проблема, привыкаешь достаточно быстро, а IDE автоматически их подставляют.
Отредактировано 25.12.2020 12:59 Михaил . Предыдущая версия . Еще …
Отредактировано 25.12.2020 12:57 Михaил . Предыдущая версия .
Отредактировано 25.12.2020 12:50 Михaил . Предыдущая версия .
Re[3]: Язык для наколенной разработки для себя
От: Cyberax Марс  
Дата: 25.12.20 12:58
Оценка: 4 (1)
Здравствуйте, Евгений Музыченко, Вы писали:

C>>Go?

ЕМ>Так он же вроде из коробки достаточно беден, как и C. Насколько я знаю, там нет ни множеств, ни многоуровневых списков/кортежей.
Есть строго-типизированные hashmap'ы и массивы. Немного, но хватает для большинства целей.

Полноценные generic'и появятся через год, они запланированы для Go 1.18.

ЕМ>Хочется чего-нибудь выразительного, типа "добавить к основному списку подсписок из пяти элементов", "если тип данного элемента числовой, то...", "если значение входит в заданное множество, то...".

Да, часто приходится писать больше кода.

Зато плюс в хорошо продуманной системе модулей и инструментарии. В отличие от Питона, где всё превращается в https://xkcd.com/1987/ , я могу взять проект из репозитория и гарантированно собрать его, не заботясь об окружении.
Sapienti sat!
Re: Язык для наколенной разработки для себя
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 25.12.20 13:58
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Периодически возникает желание по-быстрому накидать что-нибудь для разовой или эпизодической обработки текста, XML/HTML, баз данных и т.п. Сугубо для себя, без перспективы выпуска на широкую публику. Что-то делаю на привычном C++, что-то на JavaScript, несколько раз пытался делать на PowerShell, но не могу перебороть отвращения к его синтаксису.


Я за Python или Elixir. Если надо что-то сильно сетевое, то Elixir т.к. OTP, если больше про обработку данных, то Python, т.к. Pandas.

Порог вхождения в любой из них низкий, выхлоп почти сразу. Можно ограничиться только Python, но там всегда надо помнить про GIL и сопутствующие проблемы.

Чисто теоретически можно выучить Scala и покрыть оба случая разом, но это для реальных любителей языков
Отредактировано 25.12.2020 14:00 kaa.python . Предыдущая версия .
Re[3]: Язык для наколенной разработки для себя
От: flаt  
Дата: 25.12.20 14:21
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:



ЕМ>Так он же вроде из коробки достаточно беден, как и C. Насколько я знаю, там нет ни множеств, ни многоуровневых списков/кортежей. Хочется чего-нибудь выразительного, типа "добавить к основному списку подсписок из пяти элементов", "если тип данного элемента числовой, то...", "если значение входит в заданное множество, то...".


Python.

ЗЫ: а как с этим в JS? Там же плохо всё
Re[2]: Язык для наколенной разработки для себя
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 25.12.20 14:26
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, Евгений Музыченко, Вы писали:


ЕМ>>Периодически возникает желание по-быстрому накидать что-нибудь для разовой или эпизодической обработки текста, XML/HTML, баз данных и т.п. Сугубо для себя, без перспективы выпуска на широкую публику. Что-то делаю на привычном C++, что-то на JavaScript, несколько раз пытался делать на PowerShell, но не могу перебороть отвращения к его синтаксису.

C>Go?

Для продуктовой разработки — однозначно да! Для наколенной... ну не знаю, Pythonсилтно богаче по набору библиотек и сильно выразительнее.
Re: Язык для наколенной разработки для себя
От: CaptainFlint Россия http://flint-inc.ru/
Дата: 25.12.20 14:53
Оценка: 12 (1)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Периодически возникает желание по-быстрому накидать что-нибудь для разовой или эпизодической обработки текста, XML/HTML, баз данных и т.п. Сугубо для себя, без перспективы выпуска на широкую публику. Что-то делаю на привычном C++, что-то на JavaScript, несколько раз пытался делать на PowerShell, но не могу перебороть отвращения к его синтаксису.


ЕМ>Что сейчас есть из универсальных языков/сред для подобных целей — с богатым набором встроенных средств обработки разнородных данных (строки, списки, кортежи, множества, SqLite, HTTP и т.п.), и не слишком коряво выглядящим кодом?


Мне для наколенной разработки хорошо зашёл Perl 5. У него много полезных синтаксических конструкций, которые позволяют очень коротко выразить то, что в других языках приходится расписывать на несколько строк. Для "быстренько склепать и стартануть" — само то. Для долгосрочно поддерживаемых проектов, конечно, чрезмерное увлечение такими заворотами может выйти боком с точки зрения понятности кода, но при желании можно обходиться и без них; принцип TIMTOWDI, There Is More Than One way To Do It.

На Питоне тоже пишу, но "для себя" он как-то совершенно не приглянулся. Во-первых, отступы. Мало того, что постоянно приходится следить, где табы, а где пробелы (в чужом коде бывает и так, и эдак), так эта особенность синтаксиса ещё и ломает мне некоторые сценарии (написание простеньких однострочников; вставка отладочных принтов со специальным нарушением отступов, чтобы их легко было выцепить глазами и потом удалить…). Во-вторых, это более "многословный" язык. Гораздо проще написать `ls -la` в Перле, чем import subprocess; subprocess.check_output('ls -la') в Питоне. Про работу с регулярками даже и не заикаюсь, Перл, можно сказать, дышит ими. Однако если постоянно нужны всевозможные сторонние модули, то тут по моему опыту Питон обычно выигрывает. Хотя, скажем, для парсинга XML я так и не смог найти устраивающего меня варианта ни там, ни там, пришлось писать свой (кое-что, разумеется, есть в обоих, но оказались без нужной мне функциональности).
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[3]: Язык для наколенной разработки для себя
От: Cyberax Марс  
Дата: 25.12.20 15:14
Оценка:
Здравствуйте, kaa.python, Вы писали:

ЕМ>>>Периодически возникает желание по-быстрому накидать что-нибудь для разовой или эпизодической обработки текста, XML/HTML, баз данных и т.п. Сугубо для себя, без перспективы выпуска на широкую публику. Что-то делаю на привычном C++, что-то на JavaScript, несколько раз пытался делать на PowerShell, но не могу перебороть отвращения к его синтаксису.

C>>Go?
KP>Для продуктовой разработки — однозначно да! Для наколенной... ну не знаю, Pythonсилтно богаче по набору библиотек и сильно выразительнее.
Выразительнее — да, однозначно. Насчёт богаче — уже вопрос отдельный, сильно зависит от области. Скажем, для ML альтернатив Питону вообще нет, а вот для серверов — уже Go сильно лучше.
Sapienti sat!
Re[4]: Язык для наколенной разработки для себя
От: Михaил  
Дата: 25.12.20 15:33
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>а вот для серверов — уже Go сильно лучше.


А что у Го с серверными фреймворками? есть зрелые варианты, использующиеся в нагруженном продакшене (что то сравнимое с питоновской джангой, на которой до недавних пор сидел инстаграм)? Ну и всякие мелкие серверные фичи, вроде обработки форм, локализации веб проектов, веб админки для бд и т.п., есть готовые решения, или придется писать вручную для веб проектов?
Re[4]: julia
От: Sharov Россия  
Дата: 25.12.20 17:22
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

KP>>Для продуктовой разработки — однозначно да! Для наколенной... ну не знаю, Pythonсилтно богаче по набору библиотек и сильно выразительнее.

C>Выразительнее — да, однозначно. Насчёт богаче — уже вопрос отдельный, сильно зависит от области. Скажем, для ML альтернатив Питону вообще нет, а вот для серверов — уже Go сильно лучше.

Вроде julia активно проталкивают, чем закончится --
Кодом людям нужно помогать!
Re[2]: Язык для наколенной разработки для себя
От: Sharov Россия  
Дата: 25.12.20 17:30
Оценка:
Здравствуйте, Михaил, Вы писали:

М>2) Интерпретируемый, то есть часто об ошибке не знаете, пока исполнение кода не дойдет до конкретного места, в каком-нибудь if-else можно элементарно попустить баг. Есть "линтеры", но они не всегда помогают.


pycharm тут неплохо помогает, подсвечивает спорные места.

М>6) концепция virtualenv и постоянное ее activate раздражает. Если ее почти всегда используют, сделали бы этот venv как js npm, чтобы все пакеты устанавливались по умолчанию в текущую директорию. Но нет, надо вручную создавать эту песочницу, не забыть активировать.


В чем проблема сделать один virtualenv и подключать его для всех проектов? Могу ошибаться, но это настравивается
в том же pycharm в Settings->Project interpreter.
Кодом людям нужно помогать!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.