Привет, анон. В этом треде мы определяем самый выблядский, кривой, убогий язык программирования.Моё мнение - это, конечно же, bash. Навскидку:1. a = 5 #a: command not founda=5 #всё норм2if [1]then echo "123"fi#[1]: command not found#и что это за fi? детский сад, блядьif [ 1 ]then echo "123"fi#работаетитерация по массиву:for i in "${a[@]}"
java
>>809373a.plus(b.minus(c.plus(d)))
>>809368 (OP)Таки да, язык, в котором true - это 0, а false - любое другое целое, не может не быть говном.Алсо, все эти правила подстановки аргументов, рождающие совершенно ебанутые костыли шелскриптинга, типа if [ "x$val" = xyes ], это просто пиздец.
> и что это за fi? детский сад, блядьВ Ruby постоянно end'ы нужно дописывать, и ничего же.Вообще, ты описал очень малую часть проблем, да и не проблемы это вовсе. Что мне не понравилось в Bash'e (исходя из моего скудного опыта):- Переменные по умолчанию глобальные, их просто нет смысла передавать в функции.- Во время декларации функции нельзя указать, как именовать пришедшие сверху параметры. То есть нельзя написать function foo(bar1, bar2), нужно выковыривать переменные из $1, $2 и т.д. Такие названия параметров неочевидны, нужно скроллить больше кода, чтобы понять, что туда приходит и с чем работает функция, чтобы понять её назначение.- Чтобы из функции завершить скрипт нужно искать process id скрипта и убивать его, так как функция - это сабшелл и выход из неё перемещает в родительский шелл, но не прекращает выполнение скрипта.- Функции могут возвращать только код результата операции. Возвращение числа, строки делается через жо echo.
>>809493>В Ruby постоянно end'ы нужно дописывать, и ничего же.Ну так ruby и есть один из самых говнокодерских языков. И дело не только в end'ах, там масса проблем, которые склоняют неокрепшие умы новичков к обезъяннему говнокодерству.
>>809558А какой язык меньшим прививает говнокодерские привычки ? Решил вкатиться в Си, затем пробовать go
>>809563C, C++. Наверное.мимо нюфак
>>809575Сам Сишку и решил учить
>>809563Go таки поддерживает хороший стиль кода.
>>809376a.plus(b).minus(c).minus(d)
>>809627>Go>imperative language>2016
>>809558а вот насчет руби двачуюИ особенно рельсы, ёбаный пиздец и кошмар в плане логики. В серьез работать на этих языках - разжижать себе мозги.Поэтому сам укатился на С
Тем не менее, половина интернетов работает на коряво написанных баш-скриптах. Ящитаю, достаточно просто знать, когда стоит их использовать. Автоматически настроить фаерволл на сервере/сделать бекап -- ансибл, что-то дернуть по сети -- питон, а вот для операций типа "распихать раз в день картинки по дате модификации по папочкам" баш подходит. Или, например, комбайнеры для развертывания и поддержки чего-то несложного, как сервер майнкрафта, тоже иногда проще сделать на баше.
>>809368 (OP)Я победил
>>809710Да, мне ещё Bash нравится тем, что почти любую мою хотелку можно без труда нагуглить. Я так из гугловских советов собрал скрипт (почти бездумно), который записанное видео с экрана конвертирует в gif'ку. Ну и самое удобное - тесная и очень простая интеграция со всякими find, sed, curl, ffmpeg, youtube-dl, любым скриптом, который умеет плевать в stdout. Обойти папку рекурсивно и склеить содержимое в один файл по определённым правилам? 2 строчки с использованием find и sed. Вывести в консоль текст текущей проигрываемой песни? Хватит curl, sed, и консольного API проигрывателя.>>809713Подтверждаю твою победу пиком.
>>809368 (OP)Бля, не напоминай. Ебаный ужас и нелогичнейшая хуита для запуска будильника и самба-сервера, ну там папки почистить еще. Линуксоиды не извращенцы, ну да, просто вкусы специфические.
Я так понимаю скриптики на VBA для Олечки из бухгалтерии вам педалить не приходилось...
>>809713Зачем складывать объекты и массивы? Это по определению долбоебизм и язык тут не при чём.
>>809723Ну так почему JS просто не выдаст ошибку? Это ведь умалчивание ошибок, вдруг у тебя в проекте такая ситуация произойдёт, а ты будешь дебажить это говно, а мог бы сразу получить внятную ошибку.
>>809721Зато нам приходилось педалить Олечку ;)
>>809368 (OP)Ассемблер с AT&T, вы только посмотрите: movb %al,%ahmovw %ax,%bxmovl %ebx,%eax
>>809736>al,%ahПроиграл.
>>809368 (OP)>bashТолько вот bash это не язык программирования, так что ты уже обосрался.
>>809368 (OP)
>>809739http://stackoverflow.com/questions/28693737/is-bash-a-programming-language
>>809742Так. И что же у нас там написано?> Bash is the GNU Project's shell. Bash is the Bourne Again SHell. Bash is an sh-compatible shell
>>809742Короче, там нигде убедительно не показано, что это язык. Даже то, что в первом ответе выделили болдом, выделили некорректно.Выделили так:Bash is an sh-compatible command language interpreter that executes commands read from the standard input or from a file. Bash also incorporates useful features from the Korn and C shells (ksh and csh).А грамматически корректно так:Bash is an sh-compatible command language interpreter that executes commands read from the standard input or from a file. Bash also incorporates useful features from the Korn and C shells (ksh and csh).Сказуемое там не "an sh-compatible command language", а "an sh-compatible command language interpreter". Если убрать второстепенные члены предложения, останется "Bash is an interpreter". Так что вот так.
>>809717>Подтверждаю твою победу пиком.Маленький бздунишка :3
>>809737Кек, не заметил, ну как бэ намекает.
https://www.destroyallsoftware.com/talks/watЗдесь, по моему, человек давным давно нам всем доказал какой язык самый уебищный
>>809772Ну так у нас просто версии разные. На предыдущем пике нода, которую я собирал чуть меньше, чем год назад (она, кстати stable!).А вот в бровзере такой проблемы нет, так как его недавно обновлял. Зато там есть другая проблема: http://stackoverflow.com/questions/37939455/why-does-the-value-of-typeof-null-change-inside-a-loop
>>809810map передает ещё и индекс, так что ['10', '10', '10'].map(n => parseInt(n)) сработает нормально
>>809818Это да, а вот мой пик, перед сортировкой числа преобразуются в строки. Если брать скриптовые языки, с которыми я знаком, все имеют красную кнопку для сортировки массива чисел, в JS же всё настолько контринтуитивно, что нужно даже ради мелочей открывать доку.
>>809829И ещё, наверное, было бы логичнее, чтобы результат был не [1, 2, 22, 3], а ['1', '2', '22', '3'], раз уж числа сравнивались как строки.
>>809717>>809772>>809803Вы просто не знаете про переменную _. Очень удобная переменная в баше (и в перл она тоже есть вроде бы), можно писать, напримерmkdir fascinating_startup && cd $_Если папка успешно создастся, то сразу в нее и будет переход, а если нет, то все останется на своих местах.Наверное, когда в жс нахлынули новички, не знающие никсов (в чем ни в коем случае нет их вины), эту переменную убрали.Если хотите лучше понимать как работает баш, попробуйте выучить тикль, эти языки очень схожи, только тикль немного стройнее.Ну а если хотите попыхать жопами, то пыхайте конечно, кто же запретит.
>>809886В ocaml кстати похожая переменная есть, которая хранит результат последнего вычисленного выражения. Называется it. Ксавье еще разгонял про нее в своей книжке functional programming, using caml light. Он там как раз описывал создания компилятора ASL, и синтаксис для байнда былlet x be 5Наверняка он специально так придумал, чтобы когда в качестве примера написать let it be expression, то намек на битлов был бы.
>>809887> В ocaml кстати похожая переменная есть, которая хранит результат последнего вычисленного выражения. Называется it. В режиме интерпретатора, ага.В большинстве интерпретаторов есть переменная, которая хранит результат последнего выражения. От питухона и до Haskell.> В ocaml кстати похожая переменнаяКстати, что тут похожего? &_ хранит последний аргумент последней команды. А не "результат последнего вычисленного выражения". Сходсва как у тёплого и мягкого.
>>809887>let x be 5Просто он слишком много писал на cobol
>>809891> аргумент последней командыНу да, верно. Но все равно это информация о последней выполненой команде.> Сходсва как у тёплого и мягкого.Вполне имеется. И то и другое как правило приятно.
>>809897>И то и другое как правило приятно.Тёплого и мягкого тебе за шиворот тогда.
>>809886Да, всё сходится. Про $_ действительно не знал.> Если хотите лучше понимать как работает баш, попробуйте выучить тикльТак в мануале баша написано про $_, просто я его очень выборочно читал, использовал только $! и !!Или под "понимать" ты имеешь в виду понимание принципов работы history expansion?
>>809905Сначала смоги в квантор "как правило", потом остроумничай, шкодник.>>809907Нет, больше про синтаксис, всякие там { }, использование expr для вычисления арифметических выражений. Определение переменной без $, а потом обращение к ней с $.
>>809907> Так в мануале баша написано про $_, просто я его очень выборочно читал, использовал только $! и !!Для полноты картины - есть еще $? - она то как раз и содержит результат последней команды - это число. 0 - успех, не 0 - что-то пошло не так.
>>809915> больше про синтаксис, всякие там { }, использование expr для вычисления арифметических выраженийЭто интересно, времени у меня много, выделю.А что думаешь по поводу >>809493, я писал это в надежде на то, что меня поправят или подскажут как правильней.
>>809916Я бы не называл exit code "результатом команды".Обычно команда делает нечто бОльшее, чем просто завершается с каким-то кодом.
>>809919В баше, наверное, только один плюс - процессы нативно вызываются.То есть - "./2ch --op=hui" вместо какого-либо "execute("./2ch", ["op": "hui"]);"
>>809922>В баше, наверное, только один плюс - процессы нативно вызываются.КОМАНДНАЯ ОБОЛОЧКА, ВНЕЗАПНО, ПОЗВОЛЯЕТ НАТИВНО ЗАПУСКАТЬ КОМАНДЫ!11ШОК! ФОТО!
>>809924> КОМАНДНАЯ ОБОЛОЧКАИнтерпретатор языка программирования. "Оболочкой" то можно сделать что угодно.В итоге - удобно запускать процессы, но полный пиздец со всем остальным. Как итог - я для рукописных скриптов использую дишечку.
>>809925Вот тебе ещё охуенных плюсов и минусов в твоём стиле:"Компилятор превращает исходный код программы в нечитаемое говно. Единственный плюс — программу после этого можно запускать"
>>809928> Компилятор превращает исходный код программы в нечитаемое говно.Ну так распространять программу как скрипт, а не в скомпилированном виде. Ты же не ругаешься, что питон прогу в нечитаемый байткод компилит - ты же исходник запускаешь?Там все так же - ставишь вверху "!#/usr/bin/env rdmd" и "интерпритируешь как в баше"
>>809919Да по-моему, все так и есть, так на баше и пишут обычно.
>>809444>язык, в котором true - это 0, а false - любое другое целое, не может не быть говномКакой же ты долбоёб. Гугли exit codes.