Pull to refresh

Comments 31

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


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

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

UFO landed and left these words here
Здравствуйте, описки/ошибки, указанные Вами, исправил.

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


И ещё, пожалуй, можно добавить 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. Из-за того что материал вырван из контекста, у многих складывается искаженное представление о том что хотел донести Роберт.
UFO landed and left these words here
Немного перефразировав Алана Кокса, смею заявить, что асинхронное программирование может стать проблемой только для тех, кто не умеет программировать конечные автоматы.
UFO landed and left these words here
В изначальной фразе Кокс говорил о том, что компьютер сам по себе — конечный автомат и потоки вообще не нужны, как раз имея ввиду, что это истинно на любой уровне сложности.

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

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

Articles