Изобрел новый язык программирования?

от автора

Адептам «новых и улучшенных» языков программирования посвящается.
Просто поставьте галочки в нужных местах 🙂

Так получилось, что твой любимый язык:
[ ] функциональный [ ] императивный [ ] объектно-ориентированный
[ ] процедурный [ ] основанный на стеке [ ] «мульти-парадигменный»
[ ] «ленивый» [ ] быстрый [ ] статически-типизированный [ ] динамически-типизированный
[ ] безупречный [ ] не безупречный [ ] не «стерильный» [ ] визуальный [ ] легкий для начинающих
[ ] сложный для программистов [ ] абсолютно непонятный

Этот язык не станет популярным, и вот почему:

Ты веришь, что:
[ ] синтаксис — именно то, что делает программирование сложным
[ ] сбор мусора не требует ресурсов
[ ] у компьютеров — бесконечная память
[ ] никому на самом деле не нужны:
[ ] параллелизм [ ] интерактивность [ ] отладчик [ ] IDE [ ] I/O
[ ] взаимодействие с кодом, не написанным на твоем языке
[ ] весь мир говорит на 7-битном ASCII
[ ] легко масштабировать большие программные проекты
[ ] программистов легко уговорить перейти на новый язык
[ ] программистов легко уговорить перейти на новую IDE
[ ] программисты любят писать много повторяющегося текста
[ ] программисты не будут использовать то, что работает, но не закреплено в спецификации языка
[ ] неожиданные побочные эффекты — именно то, что делает программирование интересным

К сожалению, твому языку не хватает:
[ ] исчерпывающего синтаксиса [ ] точек с запятой [ ] достаточного количества пробелов
[ ] макросов [ ] неявного приведения типов [ ] явного приведения типов [ ] преобразования типов
[ ] goto [ ] исключений [ ] доступа к переменным верхнего уровня [ ] рекурсии [ ] подпроцедур
[ ] рефлексии [ ] подтипов [ ] множественного наследования [ ] перегрузки операторов
[ ] математических типов данных [ ] рекурсивных типов [ ] полиморфных типов
[ ] нетипизированных массивов [ ] монад [ ] зависимых типов
[ ] вложенных операторов [ ] вложенных комментариев [ ] многострочных литералов [ ] regex
[ ] вызовов по значению [ ] вызовов по названию [ ] вызовов по ссылке [ ] call-cc

Задай себе следующие философские вопросы:
[ ] Обязаны ли программисты изучать тонны документации для написания «Hello, World?»
[ ] Обязаны ли программисты переутомиться, написав свой первый «Hello, World?»
[ ] Самая серьезная программа, написанная на твоем языке — его компилятор?
[ ] Самая серьезная программа, написанная на твоем языке — даже не его компилятор?
[ ] Отсутствуют спецификации языка?
[ ] «Применение и есть спецификация»?
Твой код: [ ] закрытый [ ] запатентован [ ] не принадлежит тебе
[ ] Твоя система типов слишком нечеткая?
[ ] Некоторые конструкции твоего языка невозможно однозначно интерпретировать?
[ ] и есть пример такого кода
[ ] попытка скомпилировать этот пример «роняет» компилятор
[ ] Название твоего языка не позволяет найти его в Google?
[ ] Интерпретируемые языки никогда не будут столь же быстрыми, как C?
[ ] Компилируемые языки никогда не будут «расширяемыми»?
[ ] Написать компилятор, понимаюший естественный язык — задача искусственного интеллекта?
[ ] Твой язык опирается на оптимизацию, которая никогда еще и нигде не применялась или даже невозможна?
[ ] В мире — меньше 100 программистов, достаточно умных для использования твоего языка?
[ ] ____________________________ займет экспоненциальное время?
[ ] ____________________________ не работает?

Твоя реализация твоего же языка сталкивается со следующими проблемами:
[ ] Процессоры работают не так, как хотелось бы
[ ] RAM работает не так, как хотелось бы
[ ] Виртуальные машины работают не так, как хотелось бы
[ ] Компиляторы так не работают
[ ] Компиляторы даже теоретически не могут так работать
[ ] Конфликты в парзинге разрешаются с помощью rand()
[ ] Тебе требуется компилятор во время исполнения
[ ] Тебе требуется среда исполнения во время компиляции
[ ] Ошибки компилятора не понятны никому, даже тебе
[ ] Опасное поведение — всего лишь предупреждение
[ ] Компилятор «падает», если ты не так на него посмотрел
[ ] Виртуальная машина падает, если ты не в настроении
[ ] Кажется, ты не понимаешь основ оптимизации
[ ] Кажется, ты не понимаешь основ системного программирования
[ ] Кажется, ты не понимаешь указатели
[ ] Кажется, ты не понимаешь функции

Реклама твоего языка не вызывает доверия, поскольку содержит:
[ ] Недоказанные заявления о повышенной производительности
[ ] Недоказанные заявления о простоте использования
[ ] Фальшивые бенчмарки
[ ] Графика, симуляция или криптография просто вызывает код на ассембере
[ ] Строковые операции вызывают PCRE
[ ] Матричные операции используют BLAS
[ ] Никто на самом деле не верит, что твой язык быстрее или удобнее, чем
[ ] ассемблер [ ] C [ ] FORTRAN [ ] Java [ ] Ruby [ ] Prolog
[ ] Отрицание основ теории языков программирования без достаточных причин
[ ] Отрицание основ теории системного программирования без достаточных причин
[ ] Отрицание основ теории алгоритмов без достаточных причин
[ ] Отрицание основ любых других компьютерных наук без достатоных причин

Учитывая «экосистему»:
[ ] Сложный пример твоего кода будет реализован всего лишь одной строчкой в: _______________________
[ ] У нас уже есть небезопасные императивные языки
[ ] У нас уже есть безопасные объектно-ориентированные языки
[ ] У нас уже есть безопасные статически-типизированные функциональные языки
[ ] Ты изобрел Lisp, только хуже
[ ] Ты изобрел Javascript, только хуже
[ ] Ты изобрел Java, только хуже
[ ] Ты изобрел C++, только хуже
[ ] Ты изобрел PHP, только хуже
[ ] Ты изобрел что-то лучше PHP, а смысл?
[ ] Ты изобрел Brainfuck, но относишься к этом слишком серьезно

В заключение:
[ ] У тебя — интересная идея, но она не будет нормально работать
[ ] Это — плохой язык и тебе должно быть стыдно
[ ] Программирование на этом языке — достаточное наказание за его изобретение

ссылка на оригинал статьи http://habrahabr.ru/post/159221/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *