Предыдущий пост Поделиться Следующий пост
Прорывные технологии в программировании
lex_kravetski


Ах, знаете, этот 1955-й. Фортран только-только изобрели, до изобретения Лиспа ещё три года, да и вообще всё это людям только снится, поскольку компьютеры большие, а мощности и памяти у них маленькие.

Да и самих компьютеров в мире мало. А там, где они всё-таки есть, время доступа к ним расписано по минутам, поэтому программисты пишут программы на бумажке и отлаживают на ней же. Или даже вообще в уме. Благо, длина этих программ довольно маленькая, но императивный подход со всеми его goto и ручное управление памятью, как единственный доступный вариант, даже их делает довольно сложными.

Ну а что вы хотите? Ведь ещё нет ни объектов, ни ссылок на функции, ни замыканий, ни рефлекшенов, ни нэймспейсов, ни акторов, вообще ни хрена из того, что позволяет упростить логику рассуждений, сократить код, подробить его на маленькие блоки и застраховаться от ошибок.

Но, благо, кому-то в голову приходят блок-схемы. И эти блок-схемы на фоне тотального отсутствия годных концепций программирования и подходов к архитектуре, даруют программистам просветление, не хуже, чем изобретение ассемблера, позволившего хотя бы не числа в столбик писать, а какие-никакие, но буквы, напоминающие урезанные слова.

Когда обдумываешь программу на бумажке и прогоняешь её там же, гораздо проще делать это на рисунке. Теперь не только самые одарённые, но и люди послабже интеллектом могут что-то сочинить, и оно даже заработает. И выделенное им время за компьютером не будет бездарно промотано в результате ошибок в логике программы.

А потом кому-то в голову приходит, что блок-схемы можно слегка упорядочить — как бы «распрямить». И так их прочесть даже ещё проще. Не так легко, конечно, как код на тех языках, до которых ещё лет сорок, но всё-таки проще. Единственная альтернатива-то — ассемблер.

И вот тут-то оно и понесётся. Новые, более сложные программы, для написания которых уже не надо искать кого-то из десятка гениев, которые только-то и есть на планете. Любой более-менее учёный с блок-схемой нарисует требующиеся ему пару десятков команд, проанализирует это дело, отладит на бумажке, а потом быстренько посчитает то, что ему надо посчитать.

А нет, постойте, ни хера оно никуда не понесётся. Я посмотрел на календарь — оказывается, сейчас 2017-й.

Улетайте в свой 1955-й, проклятые путешественники во времени!



doc-файл

  • 1
Это всё очень интересно.
Однако, Лекс, вот положа руку на сердце, скажи (только честно), лучше ZX Spectrum у тебя что-нибудь было? :))

Да всё, кроме БК0010 и калькулятора МК-61, у меня было лучше Спектрума.

А для тех, кто не хочет тратить три часа на видео, можно кратенькое резюме, о чём оно? О новых прорывных технологиях или о чём-то замшелом?

Без самостоятельного просмотра весь юмор будет непонятен. Но можно на перемотке посмотреть.

Fortran был существенно выше уровнем, чем блок-схемы. Хотя бы из-за наличия оператора цикла "DO".

Ну, в блок-схемах такое тоже можно, однако Фортран правда был выше уровнем.

>>... Наши инженеры передают им на флешках (на слайде нарисованы дискеты 3.5')*, у нас к сожалению локальной сети нету [что-то бубнит неразборчиво], алгоритмы на языке Графит...

Что от них хотите? У них локалки даже нет, только на днях перешли с дискет на флешки, лет через 20 только интернет появится по всей видимости.

UPD. >> ... Нужно выполнить рокировку с шампуром! ...
Эта 5!

[Смотрю дальше]

Edited at 2017-07-02 11:25 (UTC)

> Теперь не только самые одарённые, но и люди послабже интеллектом могут что-то сочинить

А как же быть с твоим посутлатом что все одарены где-то одинаково и, в отличае от мускул например, интеллект определяется только прокачкой? При чём тут одарённость? Не по коммунистически как-то делить людей на сорта.

> А как же быть с твоим посутлатом что все одарены где-то одинаково и, в отличае от мускул например, интеллект определяется только прокачкой? При чём тут одарённость? Не по коммунистически как-то делить людей на сорта.


>медицинские алгоритмы
Про медицинские технологии я вообще думаю, в связи с мировым развалом социалки надо мутить стартап с онлайновой автоматической диагностикой@назначением лечения.

Edited at 2017-07-02 13:50 (UTC)

Вы таки будете смеяться, но решения экспертных систем в медицине показали меньшее количество ошибок, чем живые доктора. Причем вряд ли их сравнивали с докторами-шаманами из северной Ботсваны.

(Удалённый комментарий)
Я когда натыкаюсь на такое получаю лишнее подтверждение собственной шизофрении: весь прекрасный новый мир, с описательным программированием, с DIY сложных миниатюрных девайсов, с клаудами всего и вся, с вымиранием физических носителей информации, с серьезной математикой и литературой в пятом классе, с АИ, пишущем песни, со стремлением избавится от неравноправия по расовому, национальному, гендерному и прочим признакам, с 3д виртом, автомобилями без водителя и с частными космическими программами, с роботизированными заводами в китае - это просто навязчивая идея, порожденная моей болезнью. А на самом деле программисты - это вот такие старые дедушки с дискетками и проектором на простыне, добавленная стоимость порождается вытачиванием гвоздя из чугуния и бабами, таскающими рельсы, а за стеной сосед радостно доедает гуляш из соседки.

Посмотрю в окно, перекрещусь на церквушку, выпью водки - и мозги на место становятся, иногда даже подумываю - не поколотить ли любя жену для острастки.

это что вообще? они это все серьезно? особенно понравилось про HIPAA (я так понял). дальше сил не было смотреть, вернее, слушать этот утренник в доме престарелых.

Ещё как. Я потом в интернетах посмотрел — изобретатель активно ходит по интернетам и всем предлагает своё мега-изобретение, которое перевернёт мир разработки софта.

Но, видимо, на всякий случай сам в этих интернетах ничего не читает. Что позволяет ему в 2017-м году делать такие крышесносящие доклады.

Бгггг. На цеховом гербе программистов изображены скрещенные костыли и велосипеды:)

А на графических языках, вполне себе блок-схемах, держится... ну, почти половина по_настоящему_серьезных_программ. Скрытых от взглядов мастеров джава и питона:)

Всего три буквы. PLC. И еще три. FBD. 2017.

Интересно, а что за вопрос к ява программерам? То есть таки на ява высокий уровень абстракций, который можно аккуратно переносить из юмл в код - это недостижимо или неудобно?

А! Это же "ДРАКОН"!
НикогдаСто лет про него не слышал, и тут опять.
Какую-то малую толику пользы из него можно выжать: если вы — буриданов осёл и никак не можете выбрать между вариантами "if (a > b) then c else d" и "if (a <= b) then d else c", то нужно выбирать тот, в котором после then "штатный" или "более частый" вариант, а после else — "нештатный" или "менее частый".

Спасибо за данный триллер. Надо будет сохранить где-нибудь в закладках, когда захочется посмотреть ужастик перед сном.

продолжая флэшмоб - пятнашки с помощью

--| & |x-
--| |
кто-нибудь нарисует?
(это было извращенное изображение элемента И-НЕ, которое является тьюринг полным, потому...)

Вот, кстати, о годных языках программирования. В Wolfram, конечно, есть большой минус — тяжело запоминающийся синтаксис, который, к тому же, в некоторых конструкциях довольно неудобный.

Однако в грамотном языке присутствует важная черта: он освобождает время для того, чтобы думать над удачным решением задачи, устраняя повторяющиеся действия. И, собственно, если сначала я пошёл по «тупому» маршруту (правда, по гораздо менее тупому, нежели было в примере с диаграммами), подумав немного, я понял, что есть решение гораздо лучше. Которое, к тому же, позволяет двигать сразу целый ряд, а не только соседние фишки.

Нам не надо ничего делать со смещениями. И проверять, нет ли рядом пустой клетки, не надо.

Гораздо более изящный вариант такой:

1. Находим двумерные координаты той фишки, по которой кликнули, и пустой клетки.
2. Считаем евклидово расстояние между ними (по теореме Пифагора).
3. Если оно — целое, то это означает, что пустая клетка и выбранная фишка в одном ряду или в одной колонке. Если нет — ничего подвинуть нельзя.
4. Если да, то нам надо получить список фишек от пустой клетки до выбранной фишки.
5. Список надо сместить на одну позицию влево и тогда исходный список с этим списком дадут матрицу замен.

Это сводит решение к следующему:

pos[x_] := FirstPosition[current, x]
c[l_] := current[[Sequence @@ l]]

swap1[xs_] := current /. MapThread[#1 -> #2 &, {xs, RotateLeft[xs]}]

swap[p1_, p2_, ed_?IntegerQ] := swap1[c /@ Subdivide[p1, p2, ed]]
swap[p1_, p2_, ed_] := current

swap[x_] := 
 With[{p1 = pos[last], p2 = pos[x]}, 
  swap[p1, p2, EuclideanDistance[p1, p2]]]


Фактически, четыре содержательные строки, плюс две вспомогательные функции.

Теперь, внимание, вопрос, додумался ли бы до этого решения хоть когда-нибудь тот, кто решал бы её тупо в лоб на диаграммах?

А как способ записи/обмена алгоритмами простыми смертными (не программистами и математиками), о чем большую часть доклада и говорится, не подходит? Там же в примерах не софт, а как раз медицинские алгоритмы, например.

Скажем так, для тех отдельных случаев, когда такой метод описания подходит, его давно уже используют — без этих дяденек с их «прорывными изобретениями» и «совершенно новыми подходами». Однако использующие это хорошо понимают всю узость области применения сего, поэтому не пытаются назвать это «универсальным языком программирования».

Или, тем более, «новым языком». Поскольку логическим деревьям, на которых, например, может быть описана система принятия решений, уже настолько до фига лет, что лектор по сравнению с ними — молодая поросль. Изобретение же ещё одного варианта представления логического дерева на экране на «новую теорию алгоритмов» ну никак не тянет.

  • 1
?

Log in

No account? Create an account