Здравствуйте, Ehudi, Вы писали:
G>>Понятия "простой" и "удобный" правда кажутся тебе настолько сложными, неоднозначными, и непонятными, что требуют уточнения, и стоят длинной дискуссии?
Ты считаешь, их вообще возможно уточнить и договориться, чтобы они стали "общими"? Все-таки "философия программирования" — это зазеркалье какое-то.
E>Договориться один раз и навсегда не получиться. Но я считаю, что каждый раз, когда возникает неоднозначность, надо уточнять о чем идет речь.
E>Что касается слова простой, то оно не так просто.
E>Ведь то что кажется простым одному, для другого не просто.
Хорошо.

Применительно к языкам программирования — простота выражается в разных аспектах:
1) Концептуальная простота языка. Характеризуется количеством понятий и концепций в самом языке. LISP, FORTH, Smalltalk, Erlang, Javascript, Brainfuck, и ассемблеры — концептуально простые языки, в базе там минимум.
2) Простота изучения. Характеризуется временем, которое надо потратить программисту на то, чтобы начать писать на языке настоящие программы, наиболее идеоматическим для языка образом. Мануал по концептуально простому Common LISP, невероятно толстый. Чтобы понять, как правильно надо писать на FORTH, который кажется простым до дебилизма, надо также развернуть мозг и потратить достаточно много времени. Эрланг как язык прост в изучении, однако OTP, без понимания которого писать нельзя — уже далеко не так прост.
То есть, концептуально простой язык далеко не обязательно прост в изучении. Однако, в целом, пункты (1) и (2) кореллируют.
3) Простота использования. Характеризуется количеством времени и размышлений, необходимых для того, чтобы решить ту или иную задачу. Эта простота также характеризуется легкостью накосячить, насколько язык опасен. Совершенно очевидно, что данный пункт сильно зависит от сочетания языка программирования, и характера задачи. Также, он связан с остальными характеристиками языка. На брейнфаке писать тяжело, не смотря на его простоту. На языке и платформе 1С — легко решать определенный класс задач, несмотря на простой базовый язык и концептуально сложную платформу.
Этот пункт — отдельная, в целом независимая характеристика.
4) Простота чтения чужого кода. Да-да. Хорошая программа должна быть в первую очередь не короткой, "потому что язык выразительный", а
понятной. Язык программирования — это в первую очередь средство общения человек-человек, и только во вторую — человек-машина. Этот пункт игнорируется большинством при оценке языков.
А он важен, если говорить о промышленной разработке. Потому, что при большой простоте использования для отдельно взятого человека, мозг другого программиста может свернуться в трубочку при чтении "простого" кода. Этот пункт уравновешивает пункт (3), который многими понимается как "выразительность".
Капитан очевидность сообщает: в целом, идеальный язык должен:
1) Быть концептуально простым — содержать минимум понятий.
2) Требовать минимум времени на изучение. Взял, и сразу начал писать.
3) Задачи должны решаться быстро и прямолинейным образом. Самое прямолинейное решение должно быть кратким, и правильным, никаких "паттернов" быть не должно. Программист не должен бороться с языком, он должен думать о задаче.
4) Программы на нем должны быть читабельны, и пониматься всеми программистами простым и однозначным образом, требуя для этого понимания минимума дополнительных знаний и дерганий по коду. Открыл, и без проблем понял, что написано и о чем оно.
Но такое невозможно. Поэтому, каждый язык представляет собой некоторый компромисс и баланс, оптимизируя данный набор характеристик. Вопрос "ты за какую простоту" с двумя вариантами ответа, который мне выше задавал IB — поставлен некорректно по своей сути. Вопрос, что ты имеешь в виду под простотой
от VladD2 — это начало длинного безмазового флейма с выносом мозга.
E>И мне кажется, что Вы это тоже должны понимать.
Характеристика "простой язык" — субъективна по своей природе. Могу пояснить, что когда я называю язык простым, я имею в виду пункты 1, 2, и 4). Когда я хочу охарактеризовать (3) — говорю "удобный".
Чтобы понять, _почему_ я считаю язык простым, надо:
1) Спросить меня об этом,
2) Посмотреть спецификацию Go, черт возьми.
Тратить вместо этого время на обсуждение, уточнение, и согласование смысла слов "простой", "сложный" и прочее — это только здесь у вас в зазеркалье такое поведение считается естественным и нормальным. Я это нормальным не считаю.