LINUX.ORG.RU

ЛОР, помоги выбрать ЯП для обучения

 , , , ,


1

3

Часто слышу просьбу научить программированию. Хотя пока я этим не занимаюсь, мне стало интересно, какой ЯП выбрать для введения в программирование.

Вот к каким мыслям я пришёл:

Язык должен наиболее чисто демонстрировать самые основы написания кода.

Не Си и не современные коммерческие языки (Java, C#, Go). Си, хотя примитивный в основе, усложнён из-за окружения, в котором используется. Современные коммерческие языки были созданы для решения проблем индустрии. Проблема общая: я хочу преподавать материал по мере нарастания сложности. Если в языке неизбежно приходится использовать классы или printf, то это затруднит объяснение (не хотелось бы слишком часто говорить «потом узнаешь для чего это нужно»), напугает студента (ему придётся писать код, используя возможности, которые он плохо понимает), создаст неправильное восприятие основ (как будто printf — это какая-то важная часть компьютера или ОС).

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

Языки, между которыми я выбираю: Pascal и Python.

Pascal устарел и денег не принесёт (обидно), но это и не является основной целью. Целью является программирование, а не современное окружение.

В частности, я не собираюсь задрачивать студента на Delphi или любой «продвинутый» диалект языка. Это противоречит цели. Я рассчитываю на то, что после должной тренировки “bare bones” нужно перейти на современный язык и это будет легко.

Важно упомянуть, что спека языка Oberon (Виртовский язык, тот же Паскаль, только упрощённый и доработанный) составляет 17 страниц.

Питон мне сложнее оценить, потому что я избегал работы с ним.

Если ограничиться императивным подмножеством, без ассоциативных массивов, классов и мета-классов, list comprehensions, HOF, исключений, то выглядит как альтернатива Паскалю. Хотя меня беспокоит динамическая типизация. Типы — очень важная вещь, хотелось бы чтобы язык помог это донести, а не быть типа «ну да, это важно, но ты забей».

Это все мои мысли.

Что касается практики, то я имел несчастье наблюдать как человек впервые знакомился с программированием, изучая Java на javarush. На это было больно смотреть.

Edit: дальнейшие пояснения по теме:

  • Подробнее про то, почему я считаю, что изучение основ и Паскаль хорошо сочетаются: 1
  • Почему не Си и не ассемблер: 1 2
  • Почему Паскаль: 1 2
  • Почему не Питон: 1
  • Целевая аудитория: 1
  • Почему такая размытая аудитория: 1 2
  • Про важность иерархии: 1


Последнее исправление: kaldeon (всего исправлений: 10)
Ответ на: комментарий от MOPKOBKA

Python учит правильно ставить отступы, а Pascal нет.

Отчасти с этим могу согласиться. Хотя на мой взгляд отступы ставить должен редактор. Причем лучше бы не только(и не столько) при наборе,сколько по отдельной кнопке и/или при сохранении. Всё же набирать неудобно когда курсор внезапно прыгает и его регулярно приходится гонять в нужное место так как прыгает он далеко не всегда туда куда хотелось бы. Правда я это про написание сишного кода так как на Питоне не пишу за отсутствием надобности в нем.

А причем тут выбор области для углубления?

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

watchcat382
()
Ответ на: комментарий от watchcat382

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

Вот мне непонятно как этому всему мешает выбор TypeScript, что будет ориентированием на веб.

MOPKOBKA ★★★★★
()
Ответ на: комментарий от ugoday

Яичница это жареные яйца. Яйца это нерождённые дети куриц. Чтобы пожарить нужна плита и сковородка. Плита должна быть включена до и выключена после готовки. Перед жаркой сковородку следует смазать маслом.

очень неточное определение. на указано нужно ли разбивать яйца перед жаркой, и с какой стороны мазать сковородку маслом и каким? солидол пойдет?

пока монк лидирует в гонке - адская кухня, за должность младшего поваренка.

alysnix ★★★
()
Ответ на: комментарий от monk

Они бодро писали на лиспе и форте, пока это было модным.

Вы за последние лет тридцать много видели «неучебных» программ на лиспе и форте? То есть таких чтобы находились в эксплуатации и/или продавались? Я - не видел.

Бездумно исполнять проще программу в императивном стиле. описывать необходимое для результата решение в функциональном:

Согласен с вами. Но так как большинство программистов имеют весьма среднюю квалификацию то им проще писать в императивном стиле.

нахождение максимума чисел.

У вас оба варианта «достаточно императивны»,на это указывает хотябы и наличие «если-то-иначе» в обоих. Поэтому мне понятны оба описания.

watchcat382
()
Ответ на: комментарий от MOPKOBKA

Factor мне не особо нравится

Так я и пишу, что Factor не совсем Forth. Собственно именно недостаток Форта, что приходится вручную следить за стеком, является его достоинством: следить за состоянием стека человек в состояний примерно десяток слов. Поэтому слова Форта приходится делать короткими. А Factor этот недостаток почти ликвидирует тем, что можно отлаживать части слов.

Я тоже могу скинуть и сказать вот она ваша функциональщина

Haskell хорош не функциональщиной, а системой типов. Никто не мешает писать все внутри IO. Но функциональщину легче рекламировать.

В живых компиляторах можно сигнатуру добавить

В gforth, например?

monk ★★★★★
()
Ответ на: комментарий от monk

В gforth, например?

Это скорее мертвое. Собрать никто не может, все падает, ничего не работает, библиотек нету, инструментов нету.

Из более живого

https://vfxforth.com/

https://www.forth.com/

Из смешного но интересного

https://cosy.com/

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 3)
Ответ на: комментарий от watchcat382

Вы за последние лет тридцать много видели «неучебных» программ на лиспе и форте?

Я же пишу: пока было модным. Потом Си+Юникс всё сожрали.

то им проще писать в императивном стиле

Чем проще? В императивном стиле надо следить за изменяемым состоянием.

monk ★★★★★
()
Ответ на: комментарий от alysnix

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

monk ★★★★★
()
Ответ на: комментарий от monk

в омлете содержимое яиц тоже помещается на сковородку.

никто из бесконечников так, между прочим, и не подтвердил(и не опроверг) мой тезис о существовании трансцедентного числа, внутри которого записаны все действительные числа. шотакое!

alysnix ★★★
()
Ответ на: комментарий от monk

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

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

Вот в Аде «лопаты» и «землекопы» будут производными типами от универсального целого типа. И одно с другим перепутать ну никак не получится ни при сложнении ни при передаче в качестве параметров в функции.

Честно говоря не понимаю почему авторы Си++ позволяют компилятору такое допускать. Из каких соображений? Из собственной лени проверки в компилятор дописать?

Как раз в случае Си объяснение есть. Язык создавался тогда,когда дописать проверки в компилятор было невозможно - он бы просто не поместился в память той машины. А сейчас основу языка уже не поменять потому что необходимо тянуть за собой совместимость с старым кодом. Хотя по мере возможности и добавили те проверки которые совместимость не нарушают.

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

watchcat382
()
Ответ на: комментарий от alysnix

кстати еще придумал парадокс.

если внутри трансцедентного числа начиная с разряда N, идет последовательность, повторяющая это число, то число получается периодическим, с периодом N.

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

не?

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

alysnix ★★★
()
Последнее исправление: alysnix (всего исправлений: 2)
Ответ на: комментарий от ugoday

Люди с определённым образом устроенными мозгами идут в императивщину.

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

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

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

Описание вида «Включите питание. Нажмите кнопку и держите пока не загорится лампочка. Если лампочка погасла - повторите нажатие кнопки» понятно примерно всем,даже многим блондинкам.

watchcat382
()
Ответ на: комментарий от ugoday

спорите об упраженении, которое вы не решали, из учебника, который вы не читали.

В силу возраста и опыта я более-менее представляю свой реальный потолок в программировании. И знаю что функциональные языки мне увы недоступны. Имеется в виду как рабочие инструменты,а не для решения задач из учебника. В том что я после приложения существенных усилий смогу задание из учебника решить - я почти не сомневаюсь. Как и в том,что не смогу написать на функциональном языке ничего практически полезного. Да,именно потому что мозги иначе заточены. Я не математик,я технарь. Я уже где-то выше по теме упоминал что не только пытался «читать учебник» но даже и посещал очные курсы по Лиспу(тому что в Автокад встроен) и даже какие-то упражнения делал. Тогда же, тридцать лет назад, понял что это явно «не моё».

watchcat382
()
Ответ на: комментарий от monk

Подумаешь - использовал одну и ту же переменную сначала для одного значение, потом для несвязанного другого - фигня же, работает

const int answer = 42;

Как это без хаков использовать для другого значения?

necromant ★★
()
Ответ на: комментарий от MOPKOBKA

За счет каких свойств?

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

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

watchcat382
()
Ответ на: комментарий от alysnix

не обязатно.

Так ведь ещё циклы есть. Вместо которых в ФП рекурсия.

monk ★★★★★
()
Ответ на: комментарий от alysnix

внутри которого записаны все действительные числа. шотакое!

Переведите сие на язык математики. Тем не менее ЛЮБАЯ запись вещественного числа есть последовательность цифр, т.е. это банально счётное множество цифр. А вещественные числа образуют КОНТИНУАЛЬНОЕ множество.

mister_VA ★★
()
Ответ на: комментарий от alysnix

если внутри трансцедентного числа начиная с разряда N, идет последовательность, повторяющая это число

Вы понимаете, что ПО ОПРЕДЕЛЕНИЮ иррациональные числа НЕ периодические? ЛЮБОЕ периодическое число есть корень алгебраического уравнения с целыми коэффициентами, а трансцендентные – нет. Т.о. вы сами создали доказательство НЕВЕРНОСТИ своего утверждения.

mister_VA ★★
()
Ответ на: комментарий от MOPKOBKA

Нужны ли нам SUM VARIABLE a AND VARIABLE b MOVE RESULT TO c

Я так думаю что истина как всегда где-то посередине. И середина эта зависит от многих причин,в том числе и личных предпочтений тоже.

еще неплохо было бы EndSub SubName

В Аде end SubName.

«красиво оформленный» раздел кода

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

Любой современный редактор показывает вертикальную линию

Если править код придется на другой машине(где-нибудь на выезде на объект) то там может оказаться редактор который линии не показывает. Поэтому желательно чтобы код выглядел более-менее одинаково в разных редакторах. Из-за чего и вставление табов вместо пробелов не рекомендуется.

watchcat382
()
Ответ на: комментарий от watchcat382

посещал очные курсы по Лиспу

Лмсп не функциональный, Лисп любой.

mister_VA ★★
()
Ответ на: комментарий от ugoday

Если это проблема, значит у вас слишком много уровней вложенности

Вот только читать и править/дописывать нередко приходится чужой код. И переделывать его весь может просто не быть времени потому что при расчете даты дедлайна никто не ожидал что там такой код окажется.

А так-то я согласен что слишком много уровней вложенности это плохо.

watchcat382
()
Ответ на: комментарий от watchcat382

Также не представляю как на функциональном языке выразить процедуру запуска дизель-генератора

"Запуск ДГУ осуществляется при температуре охлаждающей жидкости не ниже 30°С, температура масла должна быть около 35°С. Температура окружающего воздуха вокруг неработающего ДГУ, находящегося в помещении или контейнере, должна быть не ниже 20°С.

Нагрузка на ДГУ увеличивается постепенно через промежутки времени: в летнее время через каждые 5-7 мин., в зимнее время через каждые 10-12 мин. После запуска ДГУ подается 25% нагрузки, потом 50%, потом 75%, потом 100%.

Для ДГУ, работающего под нагрузкой, идеальным считается режим, когда все фазы нагружены одинаково, то есть, нагрузка является симметричной. В реальности нагрузка таковой не является, она значительно отличается по величине в каждой из фаз. Разница между значением силы тока минимально и максимально загруженных 2-х фаз не должна превышать 25%. " (https://ohranatruda.ru/upload/iblock/035/rekomendatsii-po-ekspluatatsii-dizel_generatornoy-ustanovki.pdf)

Никаких шаг 1, шаг 2 , если … шаг 3

monk ★★★★★
()
Ответ на: комментарий от Nervous

конкретную реализацию оставляют на усмотрение исполнителя.

Это скорее в техзаданиях на проектирование,а не в инструкциях по эксплуатации.

watchcat382
()
Ответ на: комментарий от necromant

Как выразить инструкцию на императивном языке - представляю легко.

Вот реальные пошаговые инструкции почти всегда неполны.

«Включите питание. Нажмите кнопку и держите пока не загорится лампочка. Если лампочка погасла - повторите нажатие кнопки»

Хороший пример. Человек уже неделю держит кнопку нажатой, а лампочка не загорается… перегорела.

monk ★★★★★
()
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от monk

А реально именно шаг1, шаг2, шаг3 и именно так и будет выполнять сию инструкцию водятел, у которого такое писание переделается в мозгу в команды «проверь», «поверни», «дёрни». Видите ли, двуногие без перьев не различают «необходимо резко потянуть рукоятку» и «резко потяните рукоятку» в смысле руководства к действию. Потому что в процессе онтогенеза они научаются воспринимать руководства к действию в любых формах.

mister_VA ★★
()
Ответ на: комментарий от watchcat382

в инструкциях по эксплуатации

И в инструкциях. «Обеспечьте электропитание 220В/10А/50Гц, температурный режим должен быть от … до …, не допускайте подтекания масла».

Нет «шаг 1 - заключите договор с электроснабжающей организацией, шаг 2 - проведите электрическую сеть с характеристиками …, шаг Н - измерьте температуру, шаг Н+1 если температура ниже …, включите обогреватель …».

monk ★★★★★
()
Ответ на: комментарий от mister_VA

Тем не менее ЛЮБАЯ запись вещественного числа есть последовательность цифр, т.е. это банально счётное множество цифр.

как «банальное» счетное множество (вы видимо хотели сказать бесконечное счетное множество нулей и единиц) может породить несчетное множество чисел? такой переход от счетности к несчетности неочевиден.

alysnix ★★★
()
Ответ на: комментарий от ugoday

Сказано, возьмите три яйца, а переменная непроинициализирована.

Так это и есть инициализация. В старом бейсике так и писали LET N=3

watchcat382
()
Ответ на: комментарий от mister_VA

Из функциональной схемы «для шага Н нужны условия 2, 4, 5 ,13, 42» строится динамическая императивная схема. С проверкой всех условий на каждом шаге и модификацией алгоритма. А когда схема уже императивная, то что делать, если подразумеваемое условие вдруг не выполнилось, в инструкции вообще не упоминается.

monk ★★★★★
()
Ответ на: комментарий от monk

Вот реальные пошаговые инструкции почти всегда неполны.

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

взажгите конфорку, поставьте на нее сковородку, разбейте яйцо на сковородку. - императивное.

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

alysnix ★★★
()
Ответ на: комментарий от monk

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

Тогда действительно вместо «обеспечьте чистоту рук, особенно перед едой» будет «совершайте омовение рук не реже пяти раз в день, а также перед едой и после прикосновения к нечистым предметам».

monk ★★★★★
()
Ответ на: комментарий от MOPKOBKA

Вот мне непонятно как этому всему мешает выбор TypeScript

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

что будет ориентированием на веб.

И это ориентирование на веб будет совершенно бесполезно если обучаемого интересуют микроконтроллеры и программирование роботов.

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

watchcat382
()
Ответ на: комментарий от monk

Чем проще?

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

watchcat382
()
Ответ на: комментарий от alysnix

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

Потому что они строились из императивных.

Если строить изначально как декларативный, будет что-то вроде

Яичница является результатом термической обработки содержимого свежих куриных яиц с обогревом с одной стороны и доступом воздуха с другой, можно использовать сковородку. Температура обогрева должна быть в диапазоне 110°С-125°С. Время обработки определяется загустеванием белка, обычно составляет от 3 до 5 минут.

monk ★★★★★
()
Ответ на: комментарий от alysnix

В императивном стиле надо следить за изменяемым состоянием.

не обязатно.

Тем не менее в большинстве видов человеческой деятельности привычно следить за изменяемым состоянием и вмешиваться если что-то не так. Температура сковородки как пример - за ней надо следить в процессе приготовления яичницы.

watchcat382
()
Ответ на: комментарий от watchcat382

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

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

По грехам нашим, большинство попадают в императивщину и там всё, выход нет.

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

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

Также не представляю как на функциональном языке выразить процедуру запуска дизель-генератора

Ну тут ни я, ни функциональные языки, ни дизель-генератор не виноваты.

ugoday ★★★★★
()
Ответ на: комментарий от watchcat382

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

Составить инструкцию проще от цели. Как в боевом приказе: указано куда прибыть, с кем взаимодействовать, контрольные точки, ориентиры. Но это подразумевает, что получатель приказа понимает, что делает.

Так же вышеупомянутая поваренная книга написана в императивном стиле, хотя лет ей точно больше чем программированию.

Ремесло повара всегда считалось для малообразованных. Вот рецепты лечения уже не в императивном стиле, а в функциональном.

monk ★★★★★
()
Ответ на: комментарий от watchcat382

Температура сковородки как пример - за ней надо следить в процессе приготовления яичницы.

И где этот шаг хоть в одном рецепте? Обычно это как-то так

«Слегка прогрейте сковородку. Влейте растительное масло или растопите сливочное. После этого выключите газ на 30–40 секунд или переставьте ёмкость на холодную конфорку. Аккуратно добавьте яйца. Убавьте огонь до минимального.» (из рецепта в Интернете).

monk ★★★★★
()
Ответ на: комментарий от watchcat382

Я не математик,я технарь

Да я и сам металлофизик по образованию, при чём не из тех, кто расчитывает рассеяние фононов на полях дисклинаций, а из тех, кто с реальными железными железяками из железа пытается что-то сделать.

курсы по Лиспу(тому что в Автокад встроен)

Повторюсь, что автолисп имеет к семейству лиспов очень отдалённое отношение. Так можно и С с Питоном смешать, потому что z = x + y в них одинаково записываются.

ugoday ★★★★★
()
Ответ на: комментарий от monk

Яичница является результатом термической обработки с

и что? спокойно вывертывается в императивную сторону -

возьмите свежее куриное яйцо. выставите 120-125С. термически обработайте его на сковороде.

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

alysnix ★★★
()
Ответ на: комментарий от monk

Никаких шаг 1, шаг 2 , если … шаг 3

Согласен с вами,пример хороший. Но это пример «общих рекомендаций»,а не «инструкция по эксплуатации». Собственно оно рекомендациями там и называется.

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

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

watchcat382
()
Ответ на: комментарий от monk

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

у нас кто первым встал, тот и доктор… как раз в императивном. как вообще ставить клизму в функциональном стиле??? ну или удалять зуб, или мерить температуру.

недостатком деклостиля является предполагаемая завершенность процесса. то есть, это описание результата.

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

alysnix ★★★
()
Последнее исправление: alysnix (всего исправлений: 1)
Ответ на: комментарий от monk

Человек уже неделю держит кнопку нажатой, а лампочка не загорается… перегорела.

В этом случае у человека сработает таймаут «по умолчанию», установленный в некотором разумном диапазоне значений. Как минимум палец на кнопке заболит и случится hardware exception:) Обычно инструкция предписывает в этом случае обратиться в сервисный центр для выяснения причин почему не горит лампочка. Впрочем, значения параметров и таймауты могут и в явном виде быть заданы. Например при запуске дизель-генераторов предписывается не держать кнопку стартера больше пяти секунд и сделать не более 3-5 попыток с интервалом не менее заданного числа минут.

watchcat382
()
Ответ на: комментарий от ugoday

а из тех, кто с реальными железными железяками из железа пытается что-то сделать.

ковать вам, не перековать.

alysnix ★★★
()
Ответ на: комментарий от monk

шаг Н - измерьте температуру, шаг Н+1 если температура ниже …, включите обогреватель …».

Микроконтроллер в блоке управления электрогенератором именно что дословно так и работает. Выполняя вышепроцитированные «общие рекомендации». То есть декларативное описание транслируется в последовательность команд точно также как программа на функциональном языке транслируется в последовательность команд процессора.

«шаг 1 - заключите договор с электроснабжающей организацией, шаг 2 - проведите электрическую сеть с характеристиками …

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

watchcat382
()
Ответ на: комментарий от alysnix

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

Более того,в отличие от императивного варианта - не очевидна последовательность действий. То ли сначала разбить яйца на сковородку потом ставить ее на огонь,то ли сначала сковородку греть,потом разбивать туда яйца.

Чисто декларативное описание описывает цельпуть к ней в значительной степени оставляет на совести исполнителя.

watchcat382
()
Ответ на: комментарий от monk

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

а императивщина хорошо описывает процессы, и сущности в них участвующие(предмет описания декларативщиной), использует только в их отношении к процессам.

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

alysnix ★★★
()
Ответ на: комментарий от monk

Императивную инструкцию делают только тогда, когда предполагается, что исполнитель не имеет достаточных знаний

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

watchcat382
()
Ограничение на отправку комментариев: