?

Log in

No account? Create an account

Previous Entry | Next Entry

Оберонщики и отладчик

Оберон - это довольно забавная ЯП - секта. Я пока не выявил всё Евангелие (да и надо сказать, мне это неинтересно). Но некоторые главы угадываются.

Вот одна из них, из статьи "НИКЛАУС С ВИРТ О КУЛЬТУРЕ РАЗРАБОТКИ ПО".
Профессор Тони Хоар
(C.A.R. [Tony] Hoare), докладчик на этом семинаре, красноречиво представлял принципы и
преимущества доказательств корректности — прежде всего, как механизма, могущего заменить
процесс отладки.


Что вывели из этого последователи религии? Что отладчик - это "разврат мозга" и поэтому подлежит уничтожению. Вместо него мы будем доказывать корректность.

За прошедшие со времени выхода статьи ~20 лет Оберон-сообщество не сумело создать практически полезные автоматизированные инструменты доказательства корректности больших программ и внедрить их на практике. Но отладчик, тем не менее, подвергнут порицанию. Сидят теперь оберонщики без доказательства корректности и без отладчика, и мучаются. Но вера в светлое будущее их согревает.

Также мне было сказано, что Оберон хорошо подходит для рефакторинга. Но никакого инструмента, чтобы практически этот рефакторинг осуществлять, я пока не заметил. А для Java и C# такие инструменты есть. При этом, никого не смущает, что рефакторинг и отладка - это вообще абсолютно ортогональные понятия, и что в той же Java никому не приходит в голову выкинуть отладчик из-за того, что есть рефакторинг.

Когда я говорю, что по Оберону нет вакансий, мне говорят, что вакансии - это для рабов на галерах, а все Оберонщики сразу работают гендиректорами и общаются непосредственно с заказчиками.

И вообще, есть Оберон-вей, который нужно понять.

Да, где-то я всё это уже слышал. Практически дословно то же.

В лиспе не нужен отладчик, потому что есть trace.

В лиспе не нужен рефакторинг, потому что есть макросы.

В лиспе не нужны вакансии, потому что лисперы очень умные и сами умеют добыть денег сколько надо. Или потому, что вакансии по лиспу засекречены.

И вообще, есть лисп-вей, который нужно понять.

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

Когда я всё то же увидел в Обероне, мне икнулось. И я попробовал объяснить оберонщикам то, что мне не удалось объяснить лисперам. Правда, было ясно, что ничего не выйдет.

Но я люблю пробовать религиозное мышление на прочность. Не устаю удивляться тому, как искажается картина мира, какие чудовищные построения, противоречащие здравому смыслу, порождаются словами пророков (а то и их превратным истолкованием), и как утверждение, что 2 х 2 = 4 порождает в сознании верующего цепь защитных реакций. Обычно это для возмутителя спокойствия это заканчивается остракизмом. Всегда надеюсь на чудо - что удастся доказать, что 2 х 2 = 4. Но, как сказал Марк Твен, гораздо проще одурачить людей, чем объяснить им, что они одурачены. Мои успехи в борьбе с религиозными догмами за всю мою жизнь близки к нулю. Но иногда я и сам понимаю что-то новое.

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


Индустрия ИТ взрослеет. В ней не остаётся "неоткрытых островов". Программирование сегодня - это НЕ "создание программ". Это ПОДДЕРЖАНИЕ программ, т.е. изучение, починка и развитие существующих больших с учётом ограничений, вызванных существующим кодом. Даже если система пишется с нуля, конкретный программист всё равно имеет дело с небольшим объёмом своего кода и гигантским объёмом чужого, т.к. масштабы программ выросли на порядки.

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

Исключение средств отладки из учебного курса я считаю неправильным. Более того, нужно сразу объяснять детям, что есть масса уже готовых частей, из которых строят программы. Сегодня дома строят из готовых кирпичей. Никто не делает кирпичи дома. Все острова открыты. Люди ходят в море по картам, и никто не плывёт наудачу в надежде открыть новый остров. То же произошло и с компьютерами и это изменение совершенно не тривиально. Я не смотрел, как учат программированию в школе, но по косвенным признакам у меня сложилась полная уверенность, что школа не отреагировала на эту эволюцию.

Вот, собственно, и всё, что я хотел написать на эту тему.

Recent Posts from This Journal

Comments

( 9 comments — Leave a comment )
ext_2023776
Mar. 12th, 2018 07:20 pm (UTC)
Люблю людей, которые сами себе присуждают лавры поебдителя сектантов. Они точно знают, что уж они-то не такие, они адекватные и разумные.
budden73
Mar. 12th, 2018 08:45 pm (UTC)
Где вы видите здесь победу?
ext_2023776
Mar. 13th, 2018 08:40 pm (UTC)
Про победу речи не было.
budden73
Mar. 14th, 2018 09:29 pm (UTC)
А да, речь была про поебду.
geniepro
Mar. 12th, 2018 09:06 pm (UTC)
Ты драматизируешь! Оберонщикам нравится вариться в собственном соку, чувствую свою элитарность, да и фиг с ними! Ермаков как-то выложил цитату с какого-то своего городского чата:

https://forum.oberoncore.ru/viewtopic.php?f=31&t=6085#p101823
"Есть у нас региональный чатик веб-разработчиков орловских (Ruby, JS и др.)
Послеживаю краем глаза, иногда кое-что рассказываю про Обероны.

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

Но я, собственно, вот о чём. Один из участников чата сказал следующую фразу:

Цитата: "Разработчики на Go мне яро напоминают воинствующих мусульман в мире IT. Аллах сказал им писать на Go, и дальше они под это будут агрессивно проталкивать любую ложь и переворачивать любую истину. За всё время не встречал более упоротых поклонников технологии, чем эти ребята. Подозреваю, там где-то есть зомбирующие коды и мануалы. (c)"

Т.е. даже на "пригашенный" (и несколько "пригаженный") относительно Оберона Go есть привычная нам реакция.
Видимо, раздражителем является сочетание "минималистичный - строго типизированный - императивный - повседневно-промышшленный-универсальный".

В случае с Оберонами же добавляется ещё "осмеливающийся переть вообще против рынка" (т.е. претендовать не на экспериментальный и/или маргинальный, а максимально широкий статус, не будучи поддержан корпоративным гигантом типа Google).
А, да, ещё добавляется паскалевский синтаксис (несмотря на то, что холивары отошли немного в прошлое, поколения подсменились, но есть мем "Паскаль ушёл со сцены, Си победил" - а тут вдруг прут против мема)."


Был бы я в том чатике -- поправил бы Go на Oberon...
geniepro
Mar. 12th, 2018 09:11 pm (UTC)
Касательно пошагового отладчика в школьном обучении. Я хоть часто и не согласен с оберонщиками, но тут они правы -- нафига в школе всякие отладчики?
Эти конкретные инструментарии надо показывать в профильных училищах, а в школе надо обучать хаскелеподобным языкам с упором на математическое доказательство правильности программ. А самое главное -- надо учить правильно ставить задачи, в том числе проектировать правильные спецификации к программам, например.
А кто захочет стать кодером, когда вырастет, -- тот сам дома всё изучит: и сишечку (сишарпочку с явочкой), и отладчики всякие.
А школу забивать этим мусором не надо!
budden73
Mar. 14th, 2018 09:27 pm (UTC)
Ну это смотря какие школьники. Я в школе переделывал лунолёты на калькуляторе, пытался писать какие-то игры на БК-0010, мечтал про синтез звука. Были более продвинутые (ещё в 7-8 классе), которые игры на спрайтах писали. Мой одноклассник знал ассемблер и готовился к тому, чтобы стать хакером (по взлому защит), каковым потом и стал. Всё это был 9-й - 10-й класс. Ещё мы занимались (тоже на калькуляторе) расчётом двойных звёзд в астрономическом кружке. Т.е. школа - это необязательно 2х2. Учитывая то, что сегодняшние компьютеры на 5 порядков мощнее, школьник вполне может выйти на промышленные масштабы, где отладчик будет вполне по делу. Да я на самом деле, честно говоря, не знаю. Просто мне кажется, что оберонщики не только для школы против отладчика. А вообще. И вот это уже плохо. Но на самом деле - бог с ними.

Edited at 2018-03-14 09:28 pm (UTC)
geniepro
Mar. 15th, 2018 04:34 am (UTC)
Таких продвинутых школьников, которые точно знают, что станут программистами -- процент, максимум. Они и сами всё прекрасно изучат, и отладчики, в том числе.
А обычным школьникам куда полезнее просто логику изучать, математическое мышление развивать...
geniepro
Mar. 12th, 2018 09:20 pm (UTC)
> Более того, нужно сразу объяснять детям, что есть масса уже готовых частей, из которых строят программы. Сегодня дома строят из готовых кирпичей. Никто не делает кирпичи дома.

Ну это как раз "сборочное программирование", основная тема, которой хвастаются оберонщики с их компонентным программированием и компонентным паскалем.
Не знаю, чему именно учит детей инфо21, но возможно как раз этому...
( 9 comments — Leave a comment )