Размышления о пороге вхождения в языки программирования
JavaScript стал самым популярным языком программирования за этот год. Это меня натолкнуло на некоторые размышления.
Все знают, что такое порог вхождения? Низкий порог – легко вот так взять и начать; высокий – придётся сначала попотеть.
Есть технологии, порог вхождения в которые должен быть низким. Любой пользователь, как только он захочет, должен иметь возможность открыть офисную программу и набрать текст (с абзацами и заголовками); посчитать стоимость коммуналок в электронных таблицах.
Любой уверенный пользователь должен иметь возможность писать простые наборы команд. Может, ему захочется найти файлы по определённым признакам или выполнить какой-нибудь циклический расчёт (поиск делителя, например). Для этого есть Bash, Python, Perl.
Более серьёзный пользователь должен иметь возможность в среде RAD накидать простенький интерфейс и, забирая входные данные из текстовых полей, выполнять какие-нибудь расчёты с использованием BigDecimal и распределяя нагрузку по всем ядрам.
Если человек внезапно оказывается выше этого, знает структуры данных, понимает сложность алгоритмов, осознаёт понятия информационной безопасности, тогда добро пожаловать в настоящее программирование. Возможно, у него есть шанс написать безопасное приложение, которое будет шустро работать на телефоне или слабом компьютере и при этом обмениваться информацией с сервером по шифрованному каналу; вероятно, он сможет написать серверное приложение, которое будет быстро обслуживать тысячи пользователей, кэшировать информацию, бережно делать резервные копии.
И как-то так получилось, что последним пунктом занимаются люди из первой категории. Они могли бы написать на Bash скирпт, который создаст пару символических ссылок с прикольными именами, но тут они натыкаются, допустим, на PHP и JS, и это оказывается слишком просто. Они не могут ответить на вопрос «А что, если...» о своём языке программирования. Именно поэтому так активно развивается костылестроение и bicycle-engineering.
Самое забавное, что порог вхождения — это просто порог. Переступив более высокий порог, ощущаешь себя более комфортно, чем раньше. Если тебе подконтрольно больше аспектов работы программы, если переменные статически типизированы и ты сам управляешь выбором реализации структуры данных, это не значит, что кода больше или он сложнее пишется / понимается. Плюшки мощных и «сложных» языков куда более приятны.
Комнатные программисты, пожалуйста, пишите свой код у себя дома, для своего системного интерпретатора. Доверьте клиент-серверные и высоконагруженные приложения профессионалам, которые знают, как это работает.