Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 31

За последние 40 лет компьютерные технологии увеличили вычислительную мощность наших устройств более чем на двадцать процентов.


Если речь про утюги — то ОК, если про вычислители — то Боб такого ляпнуть не мог.

Ну согласитесь в 1000раз это же больше 20%)

НЛО прилетело и опубликовало эту надпись здесь
Здравствуйте, описки/ошибки, указанные Вами, исправил.

Есть ещё аспектно-ориентированное программирование во всём его многообразии, включая дженерики.


И ещё, пожалуй, можно добавить Entity-Component-System.

Можно, например, вернуть Goto, как сделано в Lua, и перестать его бояться только лишь потому, что «ну, Дейкстра же сказал, что нильзя».
Инструкция goto о которой говорил Дейкстра, и goto в современных языках (в т.ч. Lua) — это немного разные goto с разными свойствами. Например, goto в Lua не может передать управление в тело другой функции, или в область видимости локальной переменной, недоступной до перехода.

И даже так, круг применения goto крайне ограничен, и в большинстве случаев заменим. Настолько, что он ни разу не пригодился мне за 8 лет активной работы с Lua.
Это совсем не одно и то же, если только вы не решите полностью отказаться от использования функций и объявите все переменные в самом начале программы. Почитайте Clean Architecture Роберта Мартина, в четвертой главе он подробно разъясняет, откуда выросли претензии к goto.
Я-то знаю, (там картинка пирата из широко известной в узких кругах шутки про «одно и то же» ) но как убедить в этом остальных?
А зачем в этом убеждать? Все (или почти все) юзкейсы современного goto могут быть выполнены и без его помощи с сопоставимыми усилиями. Люди обычно решают задачи лучше тем инструментом, в которым имеют больше опыта, поэтому им не нужно навязывать альтернативные способы решения.

Ну и новичкам goto традиционно не советуется, потому что у них нет достаточного понимания где он применяется к месту, а где — нет. Второе обычно приводит к печальныму состоянию кода. Это как с микроволновкой — проще сказать что помещать металлы внутрь нельзя, чем надежно обучить всем правила по которым это делать можно. А когда новичок набирает необходимый для самостоятельного понимания опыт, goto ему уже как бы и не нужен.
Об аналогиях вообще, и с микроволновкой — в частности, следует помнить, что они ложные. Пристальнее присмотреться к оператору goto меня лично побудил этот пост на хабре. Там, на мой взгляд, изложена взвешенная и аргументированная точка зрения по поводу использования этого оператора. Без религиозного угара.
Об аналогиях вообще, и с микроволновкой — в частности, следует помнить, что они ложные.
И вот вы сами уже возводите что-то в абсолют, причем по причине, которая проиллюстрирована самой аналогией с микроволновкой — «есть случаи неверного использования, значит мы запретим использование в принципе». Кстати, в чем я проглядел ошибку в аналогии с микроволновкой?

20 поряков — это литературная гипербола, в этом смысле неважен порядок, а только направление. 10^20 это очень большое число, на самом деле точное чисто порядков можно вычислить, поделив общее число транзисторов первого кристалла архитектуры 80386 и текущего процессора Intel (однокристального). Данные в Winkpedia. Тут просто ощущения автора оригинального поста. И кстати, в настоящее время, чтобы увеличить производительность на 20 поцентов, как раз нужно уменьшить техпроцесс в два раза.

Теоретически, 20 порядков может получиться при сравнении самого крутого современного суперкомпа в производительности с плавающей запятой. В древние времена операция умножения занимала несколько больше тактов. Если сейчас 150*10^15 PFlops, то на 20 порядков меньше будет 0.09 операций с п.з. в минуту.
Краткое содержание статьи:
ФП это хорошо.
Полное содержание статьи:
СП, ООП и ФП наложили ограничения. Можно ли еще что-то ограничить, чтобы все же оставалась возможность программировать? Видимо нет, но все же ФП это хорошо. Мы еще поговорим об этом позже.
Ну действительно всего 3 en.wikipedia.org/wiki/Programming_paradigm
Какой то принцип Goto. Поймите уже наконец Дейкстра написал свою статью когда все писали на форсе и «иди туда» был вездесущ. Код был похож на вывод дизасма огромной функции с кучей стрелок, для goto есть свои применения и они будут, потому что это удачная концепция. А так можно и макрошаблонами устроить армагеддон и классами устроить ад. «была успешно внедрена путем замены функций указателями в наших современных языках с помощью полиморфизма» — ничего не понял но уверен что в любом случае автор не прав, полиморфизм во первых бывает статическим, во вторых то ООП что появилось ближе к акторам чем к тому что мы видим. «мы ОБЯЗАНЫ использовать их» — кому обязанны, трейд не раскрыт но думаю настало время удалить линукс — ооп то незавезли.
ничего не понял но уверен что в любом случае автор не прав

Вся суть хабра.
тем более, что на ассемблере jmp никуда не девался, и отлично работает до сих пор, просто в силу отсутствия таких инcтрукций ассемблера, как begin/end (do/done, {/}, etc)
В ассемблере есть begin и end.

Ассемблер бывают разные

[Зануда моде] Окей, в инструкциях известных мне процессоров, в которые «компилируется» текст на ассемблере, конструкций для начала и конца блока — нет
Аминь! Когда я читал третье издание PiL и параллельно писал игрушку про программирование на стеке, был просто в восторге от красоты и простоты кода, который получается с использованием goto. Потом пришлось этот фрагмент переписать на while ради совместимости с Lua 5.1. Я до сих пор не вполне понимаю, как этот кусок работает теперь.

Нельзя просто так взять и прочитать отдельную статью дядюшки Боба в отрыве от его остальных работ. На это есть несколько причин:


  • Роберт зачастую преподносит идею как единственно верную, такой у него стиль изложения. Но это лишь для упрощения повествования. Время от времени автор отмечает, что идея важна, но нужно думать своей головой.
  • Эта статья, по сути, заготовка к Clean Architecture и может выглядеть достаточно спорно в отрыве от этого контекста.
  • Пример с SOLID показателен. После прочтения Clean Architecture разными людьми было написано множество статей в виде краткого пересказа главы о SOLID. Из-за того что материал вырван из контекста, у многих складывается искаженное представление о том что хотел донести Роберт.
НЛО прилетело и опубликовало эту надпись здесь
Немного перефразировав Алана Кокса, смею заявить, что асинхронное программирование может стать проблемой только для тех, кто не умеет программировать конечные автоматы.
НЛО прилетело и опубликовало эту надпись здесь
В изначальной фразе Кокс говорил о том, что компьютер сам по себе — конечный автомат и потоки вообще не нужны, как раз имея ввиду, что это истинно на любой уровне сложности.

Ну есть ещё язык программирования будущего — была такая книга с таким названием — Пролог. Как ни странно я где то читал что его ставки опять повышаются в связи с квантовыми вычислениями.

Оффтоп: а не подскажете инструмент, который показывал бы локальность данных, а в идеале сам бы разносил независимые по данным части программы в разные потоки (да, я одновременно ленивый и наивный)? Функциональные языки это, конечно, хорошо, но иногда приходится пытаться распараллелить программу на С или плюсах.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации