LINUX.ORG.RU
ФорумTalks

Самые уродливые ЯП


0

2

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

Мне в память больше всего врезались:

  • LAMMPS script
  • vimscript
  • bash
  • GLSL

Ответ на: комментарий от quantum-troll

башу не удалось забрать пальму первенства по кривизне экранирования у command.com|cmd.exe но факт да - башэвы правила понять можно и даже можно востановить историю всех ислючений , вместе с тем постояные воркэранунды видимо очень приятная пища для эго осиляторов .

qulinxao ★★☆
()
Ответ на: комментарий от quantum-troll

Раздут настолько, что гораздо больше всего 9base вместе взятого.

подумаешь, gcc в разы больше. Я уж молчу за php. ☺

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

осиль правильные кавычки.

Конечно же оставим невменяемый синтаксис, ведь мы поклоняемся юниксу.

а ты поклоняешься Windows'у и cmd.exe? Там синтаксис не лучше.

<-foo> WTF? Т.е, если команда возвращает список файлов, я не смогу его корректно обработать?!

ты не сможешь, ибо ты неосилятор. Проблема в read, которая разбивает строку на лексемы, разделённые пробелом. Что хотел-то от скриптового ЯП?

IFS? Забудьте, для баша это работает лишь в некоторых частных случаях.

работает оно всегда, просто нужно оно редко. И кривые руки, да, не лечит.

но я с ним особо не сталкивался

с этого и начинай. Для меня любой незнакомый ЯП == верх уродства.

drBatty ★★
()
Ответ на: комментарий от quantum-troll

Раздут настолько, что гораздо больше всего 9base вместе взятого.

В 9p нет ни readline, ни локализаций, ни тестов, ни многоплаформенности, ни (хихи) комментариев. Собственно bash - 44kLOC, 9base - 66kLOC.

tailgunner ★★★★★
()
Ответ на: комментарий от drBatty

подумаешь, gcc в разы больше. Я уж молчу за php. ☺

Будто gcc и php это что-то хорошее, лол.

осиль правильные кавычки.

Разумеется, ведь $@ в кавычках это вверх элегантности и красоты.
Самому-то не смешно?

а ты поклоняешься Windows'у и cmd.exe? Там синтаксис не лучше.

Мы сейчас о шелле говорим или о примитивном командном интерпретаторе входящий в состав прошивки для игор?

Проблема в read, которая разбивает строку на лексемы, разделённые пробелом.
работает оно всегда, просто нужно оно редко. И кривые руки, да, не лечит.

Смотри как можно в rc: echo '-foo ' | ifs=() ifs=`{echo} while(line=`{read}) echo '<'$line'>'
И оно выведет <-foo >. Потому, что достаточно просто выставить ifs, и вывод команды будет соответственно разбиваться на список. Потому, что read просто возвращает строку как она есть, и вообще является внешней утилитой.

А теперь покажи мастер-класс для bash.

quantum-troll ★★★★★
()
Ответ на: комментарий от tailgunner

ни многоплаформенности

Ты говоришь о многоплатформенности уровня GNU (т.е когда вместо того, чтобы писать платформонезависимый код, городятся сотни костылей)?
http://aiju.de/rant/cross-compiling

ни тестов

Тесты для GNU — что мёртвому припарки.

readline, ни локализаций

Вот этого действительно нету, но оно и не требует так уж много SLOC.

quantum-troll ★★★★★
()
Ответ на: комментарий от quantum-troll

Ты говоришь о многоплатформенности уровня GNU

Я говорю о программе, которая в разное время работала на десятках Unix и венде. А на скольких системах работает 9base?

Тесты для GNU — что мёртвому припарки.

А для 9base они были бы полезны? Даже странно, что их нет.

readline, ни локализаций

Вот этого действительно нету, но оно и не требует так уж много SLOC.

Оно вообще не учитывается в SLOC, но занимает 8 метров.

Так что... продолжай молиться на маленький, красивый и ничего не умеющий Plan9.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от quantum-troll

Будто gcc и php это что-то хорошее, лол.

ну вот такая, сынок, наша Родина ☺

Разумеется, ведь $@ в кавычках это вверх элегантности и красоты.

Самому-то не смешно? ещё раз: что ты хотел от скриптового ЯП для одноразовых поделок?

Мы сейчас о шелле говорим или о примитивном командном интерпретаторе входящий в состав прошивки для игор?

о шелле. Bash — годный шелл.

Смотри как можно в rc: echo '-foo ' | ifs=() ifs=`{echo} while(line=`{read}) echo '<'$line'>'

тогда скобок нельзя. да и вообще, твоя НЁХ не работает

$ echo '-foo ' | ifs=() ifs=`{echo} while(line=`{read}) echo '<'$line'>'
bash: syntax error near unexpected token `)'

И оно выведет <-foo >. Потому, что достаточно просто выставить ifs, и вывод команды будет соответственно разбиваться на список. Потому, что read просто возвращает строку как она есть, и вообще является внешней утилитой.

вот видишь: read НЕ является внешней утилитой. У меня к ней даже мана нет. Это внутренний костыль bash, и работает оно внутри bash'а.

drBatty ★★
()
Ответ на: комментарий от tailgunner

А на скольких системах работает 9base?

На стольких же, на скольких и plan9port:

Linux (x86, x86-64, PowerPC, and ARM), FreeBSD (x86, x86-64), Mac OS X (x86 and Power PC), NetBSD (x86 and PowerPC), OpenBSD (x86 and PowerPC), SunOS (Sparc).

На haiku и qnx похоже пока никто не пробовал запускать, но не удивлюсь, если работает и там.

А для 9base они были бы полезны? Даже странно, что их нет.

Нет, потому что утилиты очень маленькие.

Касаемо readline: в плане другой подход, и подобным занимается не rc.

quantum-troll ★★★★★
()
Ответ на: комментарий от quantum-troll

А на скольких системах работает 9base?

На стольких же, на скольких и plan9port:

Вот и добавь размер plan9port (51М) к 9base. Кстати, венды в списке нет.

А для 9base они были бы полезны? Даже странно, что их нет.

Нет,

Первый Bourne shell, который был меньше rc, уже шел с тестовой сюитой.

потому что утилиты очень маленькие.

Размер не имеет значения.

tailgunner ★★★★★
()
Ответ на: комментарий от drBatty

что ты хотел от скриптового ЯП для одноразовых поделок?

Ну в rc же можно сделать for(arg in $*), и всё будет просто работать.

о шелле. Bash — годный шелл.

Ну, если называть годными костыли 40-летней давности, помноженные на умение GNU заставить это глючить и тормозить добавлять бессмысленных фич и бойлерплейта...

да и вообще, твоя НЁХ не работает

Конечно она не работает в bash, ведь это rc.
http://dev.man-online.org/man1/plan9-rc/

вот видишь: read НЕ является внешней утилитой. У меня к ней даже мана нет. Это внутренний костыль bash, и работает оно внутри bash'а.

А у меня есть: http://dev.man-online.org/man1/plan9-cat/

quantum-troll ★★★★★
()
Ответ на: комментарий от quantum-troll

Ну в rc же можно сделать for(arg in $*), и всё будет просто работать.

эка невидаль

$ cat tt.bash
#!/bin/bash

foo()
{
	for s in "$@"; do
		echo "'$s'"
	done
}

foo " 1 " "    2     "
$ bash tt.bash
' 1 '
'    2     '

Ну, если называть годными костыли 40-летней давности, помноженные на умение GNU заставить это глючить и тормозить добавлять бессмысленных фич и бойлерплейта...

предрассудки.

Конечно она не работает в bash, ведь это rc.

я не встречал серверов с такой оболочкой. Не нужно.

А у меня есть

ну кто против? Кто-то говорил про ненужные утилиты и фичи? Это ты про внешнюю read?

drBatty ★★
()
12 января 2014 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.