[Ответить в тред] Ответить в тред

16/08/16 - Запущен Двач Трекер
01/08/16 - Вернули возможность создавать юзердоски
09/07/16 - Новое API для капчи - внимание разработчикам приложений



Новые доски: /obr/ - Offline Battle Rap • /hv/ - Халява в интернете • /2d/ - Аниме/Беседка • /char/ - Сетевые персонажи • /wwe/ - WorldWide Wrestling Universe • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 53 | 10 | 23
Назад Вниз Каталог Обновить

Привет, анон. В этом треде мы определяем самый Аноним 31/07/16 Вск 13:47:06  809368  
14699620271450.png (12Кб, 600x600)
Привет, анон.
В этом треде мы определяем самый выблядский, кривой, убогий язык программирования.
Моё мнение - это, конечно же, bash. Навскидку:
1. a = 5 #a: command not found
a=5 #всё норм

2
if [1]
then
echo "123"
fi
#[1]: command not found
#и что это за fi? детский сад, блядь
if [ 1 ]
then
echo "123"
fi
#работает

итерация по массиву:
for i in "${a[@]}"
Аноним 31/07/16 Вск 13:48:44  809373
java
Аноним 31/07/16 Вск 13:51:36  809376
>>809373
a.plus(b.minus(c.plus(d)))
Аноним 31/07/16 Вск 15:40:05  809444
>>809368 (OP)
Таки да, язык, в котором true - это 0, а false - любое другое целое, не может не быть говном.
Алсо, все эти правила подстановки аргументов, рождающие совершенно ебанутые костыли шелскриптинга, типа if [ "x$val" = xyes ], это просто пиздец.
Аноним 31/07/16 Вск 16:23:01  809493
> и что это за fi? детский сад, блядь
В Ruby постоянно end'ы нужно дописывать, и ничего же.
Вообще, ты описал очень малую часть проблем, да и не проблемы это вовсе. Что мне не понравилось в Bash'e (исходя из моего скудного опыта):
- Переменные по умолчанию глобальные, их просто нет смысла передавать в функции.
- Во время декларации функции нельзя указать, как именовать пришедшие сверху параметры. То есть нельзя написать function foo(bar1, bar2), нужно выковыривать переменные из $1, $2 и т.д. Такие названия параметров неочевидны, нужно скроллить больше кода, чтобы понять, что туда приходит и с чем работает функция, чтобы понять её назначение.
- Чтобы из функции завершить скрипт нужно искать process id скрипта и убивать его, так как функция - это сабшелл и выход из неё перемещает в родительский шелл, но не прекращает выполнение скрипта.
- Функции могут возвращать только код результата операции. Возвращение числа, строки делается через жо echo.
Аноним 31/07/16 Вск 17:29:19  809558
>>809493
>В Ruby постоянно end'ы нужно дописывать, и ничего же.
Ну так ruby и есть один из самых говнокодерских языков. И дело не только в end'ах, там масса проблем, которые склоняют неокрепшие умы новичков к обезъяннему говнокодерству.
Аноним 31/07/16 Вск 17:36:35  809563
>>809558

А какой язык меньшим прививает говнокодерские привычки ? Решил вкатиться в Си, затем пробовать go
Аноним 31/07/16 Вск 17:40:35  809575
>>809563
C, C++. Наверное.
мимо нюфак
Аноним 31/07/16 Вск 17:49:05  809587
>>809575
Сам Сишку и решил учить
Аноним 31/07/16 Вск 18:36:01  809627
>>809563
Go таки поддерживает хороший стиль кода.
Аноним 31/07/16 Вск 18:47:03  809636
>>809376
a.plus(b).minus(c).minus(d)
Аноним 31/07/16 Вск 18:59:11  809647
14699807515170.jpg (170Кб, 1500x1000)
>>809627
>Go
>imperative language
>2016
Аноним 31/07/16 Вск 19:07:10  809652
>>809558
а вот насчет руби двачую
И особенно рельсы, ёбаный пиздец и кошмар в плане логики. В серьез работать на этих языках - разжижать себе мозги.
Поэтому сам укатился на С
Аноним 31/07/16 Вск 20:39:21  809710
Тем не менее, половина интернетов работает на коряво написанных баш-скриптах. Ящитаю, достаточно просто знать, когда стоит их использовать. Автоматически настроить фаерволл на сервере/сделать бекап -- ансибл, что-то дернуть по сети -- питон, а вот для операций типа "распихать раз в день картинки по дате модификации по папочкам" баш подходит. Или, например, комбайнеры для развертывания и поддержки чего-то несложного, как сервер майнкрафта, тоже иногда проще сделать на баше.
Аноним 31/07/16 Вск 20:45:48  809713
14699871488470.jpg (12Кб, 600x258)
>>809368 (OP)
Я победил
Аноним 31/07/16 Вск 20:53:44  809717
14699876249580.png (9Кб, 93x183)
>>809710
Да, мне ещё Bash нравится тем, что почти любую мою хотелку можно без труда нагуглить. Я так из гугловских советов собрал скрипт (почти бездумно), который записанное видео с экрана конвертирует в gif'ку. Ну и самое удобное - тесная и очень простая интеграция со всякими find, sed, curl, ffmpeg, youtube-dl, любым скриптом, который умеет плевать в stdout. Обойти папку рекурсивно и склеить содержимое в один файл по определённым правилам? 2 строчки с использованием find и sed. Вывести в консоль текст текущей проигрываемой песни? Хватит curl, sed, и консольного API проигрывателя.

>>809713
Подтверждаю твою победу пиком.
Аноним 31/07/16 Вск 21:02:17  809719
>>809368 (OP)
Бля, не напоминай. Ебаный ужас и нелогичнейшая хуита для запуска будильника и самба-сервера, ну там папки почистить еще. Линуксоиды не извращенцы, ну да, просто вкусы специфические.
Аноним 31/07/16 Вск 21:13:09  809721
Я так понимаю скриптики на VBA для Олечки из бухгалтерии вам педалить не приходилось...
Аноним 31/07/16 Вск 21:18:49  809723
>>809713
Зачем складывать объекты и массивы? Это по определению долбоебизм и язык тут не при чём.
Аноним 31/07/16 Вск 21:24:37  809730
>>809723
Ну так почему JS просто не выдаст ошибку? Это ведь умалчивание ошибок, вдруг у тебя в проекте такая ситуация произойдёт, а ты будешь дебажить это говно, а мог бы сразу получить внятную ошибку.
Аноним 31/07/16 Вск 21:27:25  809734
>>809721
Зато нам приходилось педалить Олечку ;)
Аноним 31/07/16 Вск 21:29:52  809736
>>809368 (OP)
Ассемблер с AT&T, вы только посмотрите:

movb %al,%ah
movw %ax,%bx
movl %ebx,%eax
Аноним 31/07/16 Вск 21:30:39  809737
>>809736
>al,%ah
Проиграл.
Аноним 31/07/16 Вск 21:32:38  809739
>>809368 (OP)
>bash
Только вот bash это не язык программирования, так что ты уже обосрался.
Аноним 31/07/16 Вск 21:33:11  809740
14699899911910.png (86Кб, 980x733)
>>809368 (OP)
Аноним 31/07/16 Вск 21:34:13  809742
>>809739
http://stackoverflow.com/questions/28693737/is-bash-a-programming-language
Аноним 31/07/16 Вск 21:43:43  809755
>>809742
Так. И что же у нас там написано?
> Bash is the GNU Project's shell. Bash is the Bourne Again SHell. Bash is an sh-compatible shell
Аноним 31/07/16 Вск 21:51:18  809760
>>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".

Так что вот так.
Аноним 31/07/16 Вск 22:10:14  809772
14699922148630.png (2Кб, 127x112)
>>809717
>Подтверждаю твою победу пиком.
Маленький бздунишка :3
Аноним 31/07/16 Вск 22:26:39  809788
>>809737
Кек, не заметил, ну как бэ намекает.
Аноним 31/07/16 Вск 22:31:40  809792
https://www.destroyallsoftware.com/talks/wat
Здесь, по моему, человек давным давно нам всем доказал какой язык самый уебищный
Аноним 31/07/16 Вск 22:41:40  809803
14699941011470.png (18Кб, 832x269)
>>809772
Ну так у нас просто версии разные. На предыдущем пике нода, которую я собирал чуть меньше, чем год назад (она, кстати stable!).
А вот в бровзере такой проблемы нет, так как его недавно обновлял. Зато там есть другая проблема: http://stackoverflow.com/questions/37939455/why-does-the-value-of-typeof-null-change-inside-a-loop
Аноним 31/07/16 Вск 22:46:46  809810
14699944065100.png (6Кб, 589x329)
Аноним 31/07/16 Вск 22:50:14  809818
>>809810
map передает ещё и индекс, так что ['10', '10', '10'].map(n => parseInt(n)) сработает нормально
Аноним 31/07/16 Вск 22:57:15  809829
14699950357620.png (2Кб, 191x65)
>>809818
Это да, а вот мой пик, перед сортировкой числа преобразуются в строки. Если брать скриптовые языки, с которыми я знаком, все имеют красную кнопку для сортировки массива чисел, в JS же всё настолько контринтуитивно, что нужно даже ради мелочей открывать доку.
Аноним 31/07/16 Вск 23:04:30  809841
>>809829
И ещё, наверное, было бы логичнее, чтобы результат был не [1, 2, 22, 3], а ['1', '2', '22', '3'], раз уж числа сравнивались как строки.
Аноним 31/07/16 Вск 23:48:23  809886
14699981040960.png (749Кб, 1280x720)
>>809717
>>809772
>>809803
Вы просто не знаете про переменную _. Очень удобная переменная в баше (и в перл она тоже есть вроде бы), можно писать, например

mkdir fascinating_startup && cd $_

Если папка успешно создастся, то сразу в нее и будет переход, а если нет, то все останется на своих местах.

Наверное, когда в жс нахлынули новички, не знающие никсов (в чем ни в коем случае нет их вины), эту переменную убрали.

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

Ну а если хотите попыхать жопами, то пыхайте конечно, кто же запретит.
Аноним 31/07/16 Вск 23:53:16  809887
>>809886
В ocaml кстати похожая переменная есть, которая хранит результат последнего вычисленного выражения. Называется it.

Ксавье еще разгонял про нее в своей книжке functional programming, using caml light. Он там как раз описывал создания компилятора ASL, и синтаксис для байнда был

let x be 5

Наверняка он специально так придумал, чтобы когда в качестве примера написать let it be expression, то намек на битлов был бы.
Аноним 31/07/16 Вск 23:57:02  809891
>>809887
> В ocaml кстати похожая переменная есть, которая хранит результат последнего вычисленного выражения. Называется it.

В режиме интерпретатора, ага.

В большинстве интерпретаторов есть переменная, которая хранит результат последнего выражения. От питухона и до Haskell.

> В ocaml кстати похожая переменная
Кстати, что тут похожего? &_ хранит последний аргумент последней команды. А не "результат последнего вычисленного выражения". Сходсва как у тёплого и мягкого.
Аноним 31/07/16 Вск 23:57:48  809892
>>809887
>let x be 5
Просто он слишком много писал на cobol
Аноним 01/08/16 Пнд 00:11:44  809897
>>809891
> аргумент последней команды
Ну да, верно. Но все равно это информация о последней выполненой команде.
> Сходсва как у тёплого и мягкого.
Вполне имеется. И то и другое как правило приятно.
Аноним 01/08/16 Пнд 00:23:31  809905
>>809897
>И то и другое как правило приятно.
Тёплого и мягкого тебе за шиворот тогда.
Аноним 01/08/16 Пнд 00:24:08  809907
>>809886
Да, всё сходится. Про $_ действительно не знал.

> Если хотите лучше понимать как работает баш, попробуйте выучить тикль
Так в мануале баша написано про $_, просто я его очень выборочно читал, использовал только $! и !!
Или под "понимать" ты имеешь в виду понимание принципов работы history expansion?
Аноним 01/08/16 Пнд 00:30:30  809915
>>809905
Сначала смоги в квантор "как правило", потом остроумничай, шкодник.
>>809907
Нет, больше про синтаксис, всякие там { }, использование expr для вычисления арифметических выражений. Определение переменной без $, а потом обращение к ней с $.
Аноним 01/08/16 Пнд 00:31:40  809916
>>809907
> Так в мануале баша написано про $_, просто я его очень выборочно читал, использовал только $! и !!
Для полноты картины - есть еще $? - она то как раз и содержит результат последней команды - это число. 0 - успех, не 0 - что-то пошло не так.
Аноним 01/08/16 Пнд 00:36:18  809919
>>809915
> больше про синтаксис, всякие там { }, использование expr для вычисления арифметических выражений
Это интересно, времени у меня много, выделю.
А что думаешь по поводу >>809493, я писал это в надежде на то, что меня поправят или подскажут как правильней.
Аноним 01/08/16 Пнд 00:39:20  809921
>>809916
Я бы не называл exit code "результатом команды".
Обычно команда делает нечто бОльшее, чем просто завершается с каким-то кодом.
Аноним 01/08/16 Пнд 00:41:00  809922
>>809919
В баше, наверное, только один плюс - процессы нативно вызываются.
То есть - "./2ch --op=hui" вместо какого-либо "execute("./2ch", ["op": "hui"]);"
Аноним 01/08/16 Пнд 00:43:18  809924
>>809922
>В баше, наверное, только один плюс - процессы нативно вызываются.
КОМАНДНАЯ ОБОЛОЧКА, ВНЕЗАПНО, ПОЗВОЛЯЕТ НАТИВНО ЗАПУСКАТЬ КОМАНДЫ!11
ШОК! ФОТО!
Аноним 01/08/16 Пнд 00:45:51  809925
>>809924
> КОМАНДНАЯ ОБОЛОЧКА
Интерпретатор языка программирования. "Оболочкой" то можно сделать что угодно.
В итоге - удобно запускать процессы, но полный пиздец со всем остальным. Как итог - я для рукописных скриптов использую дишечку.
Аноним 01/08/16 Пнд 00:48:35  809928
>>809925
Вот тебе ещё охуенных плюсов и минусов в твоём стиле:
"Компилятор превращает исходный код программы в нечитаемое говно. Единственный плюс — программу после этого можно запускать"
Аноним 01/08/16 Пнд 00:51:23  809931
>>809928
> Компилятор превращает исходный код программы в нечитаемое говно.
Ну так распространять программу как скрипт, а не в скомпилированном виде. Ты же не ругаешься, что питон прогу в нечитаемый байткод компилит - ты же исходник запускаешь?

Там все так же - ставишь вверху "!#/usr/bin/env rdmd" и "интерпритируешь как в баше"
Аноним 01/08/16 Пнд 07:56:19  810045
>>809919
Да по-моему, все так и есть, так на баше и пишут обычно.
Аноним 01/08/16 Пнд 21:25:44  810556
>>809444
>язык, в котором true - это 0, а false - любое другое целое, не может не быть говном
Какой же ты долбоёб. Гугли exit codes.

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 53 | 10 | 23
Назад Вверх Каталог Обновить

Топ тредов
Избранное