И вы не поверите, но ... Я ТОЖЕ ТАКОЙ ДЕЛАЮ
(каминг-аут такой, да).
Неужели социальную сеть в 150 строчках кода написать можете?
Если использовать библиотеку, в которой есть функция «создать социальную сеть», то и 1-й строчки кода хватит. То же самое, если использовать яп, в котором есть аналогичная команда.
Это настоящая проблема при измерении «выразительности» япа. Выразительность япа — это отношение количества реализованной функциональности к размеру программного кода. Так вот, если измерять выразительность с помощью «тестового» набора задач, и если создать яп, который содержит для каждой задачи из этого набора команду, выполняющую эту задачу, это будет
максимально выразительный яп. Однако с точки зрения здравого смысла это жульничество.
Есть же задачи, не входящие в тестовый набор, и если продолжать в том же духе, яп вырастет до таких размеров, что никто не сможет его изучить. Авторы часто рекламируют выразительность своих япов, которая есть результат того, что автор запихнул в яп команду для какой-то специализированной задачи, которая автору часто встречается.
-- Sun Mar 03, 2019 13:11:20 --Но компьютеры постепенно умнеют, в понимании естественных языков заметны определенный подвижки в лучшую сторону, так что не за горами то время, когда будут созданы достаточно простые и универсальные автоматизированные системы проектирования ПО, изучить которые можно будет за день-два и скармливать им готовые достаточно формализованные ТЗ и получать на выходе готовый программный продукт.
Несмотря на все подвижки в обработке естественных языков, практика программирования, на мой взгляд, движется в противоположном направлении. Создаются новые формальные языки, которые люди вынуждены учить. Не гора (компьютер) идёт к Магомету (человеку), а Магомет идёт к горе. Также заметны подвижки в создании искусственных языков (эсперанто, ложбан), которые более регулярны и призваны заменить традиционные естественные языки. Подозреваю, компьютер заговорит на человеческом языке только тогда, когда люди будут учить язык математики как
первый язык.
Кстати, написание формализованных ТЗ (спецификаций) — такое же непростое занятие, как написание математических текстов, и большинство программистов его ещё не освоили. А даже если освоят, нужна оптимизация. Очевидная реализация спецификации обычно неэффективна. Я когда-то писал пример в своём блоге. Алгоритм, находящий наибольший элемент списка, если он наивным образом получен из спецификации, требует
времени. Но любой программист знает алгоритм, требующий
времени.