[image]

Программирование для детей.

 
1 2 3 4
US спокойный тип #12.12.2019 16:05  @Gudleifr#11.12.2019 11:23
+
-
edit
 

спокойный тип
Спокойный_Тип

старожил
★★
Gudleifr> Пример "кубиков" из книги Хантера "Проектирование и конструирование компиляторов":

и как эти кубики помогут "неИТшнику начать программировать" ?

он что , начнёт вместо решения своей задачи писать свой компилятор, с блэкджеком и девками?

может кубики должны идти от модели процесса который надо автоматизировать\запрограммировать и модели опять же данных...от того в чём неИТшник является экспертом, что-то типа BPM нотации ?
   71.071.0
RU Gudleifr #12.12.2019 16:34  @спокойный тип#12.12.2019 16:05
+
-
edit
 

Gudleifr

опытный

с.т.> и как эти кубики помогут "неИТшнику начать программировать" ?
Зависит от человека, думавшего о кубиках. Это, ведь, мне они показались удобными, чтобы "начать". Другой может использовать свои кубики совершенно для другого.

Как в том анекдоте про "энергонезависимое решение":



Мне интересны любые варианты наглядного представления "модели программирования". От трансформационной модели Ершова до Лемовского:
... это замкнутая система, стремящаяся к определенному равновесию токов. Как маятник, который при отклонении всегда стремится занять самое низкое положение. Давая задачу, мы выводим машину из состояния электронного равновесия. Стараясь вернуться к нему, она как бы "по пути" решает задачу"...
 

Желательно простые и веселые.

Помогут ли "мои кубики" неИтишнику? Если я смогу придумать им красивое графическое представление, возможно.

с.т.> может кубики должны идти от модели процесса который надо автоматизировать\запрограммировать и модели опять же данных...от того в чём неИТшник является экспертом, что-то типа BPM нотации ?
Конечно, нет. Зачем тупое представление эксперту?
   71.071.0
Это сообщение редактировалось 15.12.2019 в 15:53
RU Gudleifr #15.12.2019 15:54  @Gudleifr#12.12.2019 16:34
+
+1
-
edit
 

Gudleifr

опытный

Gudleifr> Если я смогу придумать им красивое графическое представление

Пользователь и Процессы:

   78.0.3904.10878.0.3904.108
RU riven-mage #30.12.2019 20:00  @Gudleifr#28.11.2019 16:29
+
-
edit
 

riven-mage

опытный

Gudleifr> Требуется простейшая модель программирования.

Предложенная модель далека от простейшей.

Мне нравится, как объясняет суть программирования Кауфман (книга "Языки программирования. Концепции и принципы").
1. Программа = план поведения исполнителя - сущности, способной получать и выполнять команды.
2. Программирование = оказание услуг по составлению такого плана.

В простейшей модели программирования достаточно трех сущностей: солдат, командир и перечень приказов :)
   68.068.0
RU Gudleifr #30.12.2019 20:15  @riven-mage#30.12.2019 20:00
+
-
edit
 

Gudleifr

опытный

riven-mage> В простейшей модели программирования достаточно трех сущностей: солдат, командир и перечень приказов :)
А теперь на этой модели попробуйте объяснить отличие ОС, основанной на процессах, от ОС, основанной на сообщениях...
Устройство FORTH...
Преобразование DOS-BASIC-программ в NET-BASIC-программы...
   71.071.0
RU riven-mage #30.12.2019 20:18  @Gudleifr#30.12.2019 20:15
+
-
edit
 

riven-mage

опытный

Gudleifr> А теперь на этой модели попробуйте объяснить отличие ОС, основанной на процессах, от ОС, основанной на сообщениях...

Зачем в простейшей модели программирования внутренние тонкости передачи и выполнения команд?
   68.068.0
RU Gudleifr #30.12.2019 20:29  @riven-mage#30.12.2019 20:18
+
-
edit
 

Gudleifr

опытный

riven-mage> Зачем в простейшей модели программирования внутренние тонкости передачи и выполнения команд?
Затем, что мне надо именно это.
Кому-то другому надо что-то другое.
Но, в любом полезном случае "объяснения", трех сущностей будет маловато. Гибкости не хватит.
   71.071.0
RU riven-mage #30.12.2019 20:40  @Gudleifr#30.12.2019 20:29
+
+1
-
edit
 

riven-mage

опытный

riven-mage>> Зачем в простейшей модели программирования внутренние тонкости передачи и выполнения команд?
Gudleifr> Затем, что мне надо именно это.

Хорошо, что тогда понимается под словом "простейшая", и почему бы не взять любую модель распределенных вычислений - там всё давно придумано: узлы, состояния, события, каналы, сообщения...
   68.068.0
RU Gudleifr #30.12.2019 20:50  @riven-mage#30.12.2019 20:40
+
-
edit
 

Gudleifr

опытный

riven-mage> Хорошо, что тогда понимается под словом "простейшая" ?
Настолько простая, чтобы можно было посмотреть-поржать, не тратя время на изучение.
Настолько сложная, чтобы иметь полезное применение в программировании.

riven-mage> и почему бы не взять любую модель распределенных вычислений
Вы сами ответили. Если есть "любые", значит взгляд остановить не на чем.
   71.071.0
RU riven-mage #30.12.2019 21:22  @Gudleifr#30.12.2019 20:50
+
-
edit
 

riven-mage

опытный

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

ИМХО в такой формулировке есть неразрешимое противоречие.

Полезное (профессиональное) программирование не может быть настолько простым, что на изучение не требовалось бы время, поскольку современные устройства-исполнители это сложные гетерогенные системы.

Взять "память" в архитектуре фон Неймана. В современном железе "память" = кэш L1..L4 + DRAM + персистентная память (Optane) + SSD + HDD + оптические/ленточные хранилища.

НЯЗ, ни в одном языке программирования или стандартной библиотеке нет модели памяти, способной описать этот зоопарк. Есть механизмы, во многом подобранные опытным путем:
1. Для условной ОЗУ - аллокаторы, подсчет ссылок, сборщики мусора, промежуточные решения типа эппловской ARC
2. Для условной ПЗУ - файловые системы

Можно ли полезно программировать, ничего про перечисленное не зная? Мне кажется - нет.
   68.068.0
Это сообщение редактировалось 30.12.2019 в 21:28
RU Gudleifr #30.12.2019 21:34  @riven-mage#30.12.2019 21:22
+
-
edit
 

Gudleifr

опытный

riven-mage> Можно ли полезно программировать, ничего про перечисленное не зная?
Дык, большинство этого не знают. А из тех, кто знает - знают на уровне рекламных буклетов, не понимая сути.

riven-mage> В современном железе... Добавим сюда аллокаторы, подсчет ссылок, сборку мусора...
Ни в одном практическом применении алгоритмы "железа" и "софта" управления памяти не пересекаются.

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

riven-mage> Полезное (профессиональное) программирование
Без комментариев.

riven-mage> современные устройства-исполнители это сложные гетерогенные системы.
Точнее обычному человеку недоступно их нормальное описание.
   71.071.0
RU riven-mage #30.12.2019 21:39  @Gudleifr#30.12.2019 21:34
+
-
edit
 

riven-mage

опытный

riven-mage>> ни в одном языке программирования или стандартной библиотеке нет модели памяти, способной описать этот зоопарк.
Gudleifr> На любом из реально требуемых уровней - очень просто.

Понятно :D
   68.068.0
RU Gudleifr #31.12.2019 10:28  @riven-mage#30.12.2019 21:39
+
-
edit
 

Gudleifr

опытный

riven-mage> Понятно
Ну, хорошо. Раз поняли - жду комментариев по делу.
   71.071.0
+
-
edit
 

Sandro
AXT

инженер вольнодумец
★★

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

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

Ты не первый, кстати. И кубики твои тоже неоднократно предлагались в самых разных вариантах. Всё всегда заканчивалось одинаково — либо человек таки учится программировать, либо пишет ужасы навроде malloc() в цикле или там SELECT * FROM TABLE;

И никакие кубики от этого не спасают.
   52.952.9
+
-
edit
 

Gudleifr

опытный

Sandro> Ты хочешь, чтобы твой гипотетический инженер программировал, не умея программировать.
Умение программировать - это умение автоматизировать свою рутину. На 99% состоит из понимания сути этой рутины и на 1% из знания модного обезьянника.

Sandro> Очевидно, что это невозможно.
Однако, все работающие программы написаны именно так. Но тема не об этом...

Sandro> Ты не первый, кстати. И кубики твои тоже неоднократно предлагались в самых разных вариантах.
Хотя бы один вариант - в студию! Именно в это и предлагаю поиграть, а не в надувание IT-щек.
   79.0.3945.8879.0.3945.88
+
-
edit
 

Sandro
AXT

инженер вольнодумец
★★

Sandro>> Ты хочешь, чтобы твой гипотетический инженер программировал, не умея программировать.
Gudleifr> Умение программировать - это умение автоматизировать свою рутину. На 99% состоит из понимания сути этой рутины и на 1% из знания модного обезьянника.

Да, и что? Любая работа так устроена, между прочим. Не понимаю, чем тут выделяется именно программирование.

Sandro>> Очевидно, что это невозможно.
Gudleifr> Однако, все работающие программы написаны именно так. Но тема не об этом...

Инженерами, не иющими программировать? Ой!

У меня несколько другие сведения по этому поводу.

Sandro>> Ты не первый, кстати. И кубики твои тоже неоднократно предлагались в самых разных вариантах.
Gudleifr> Хотя бы один вариант - в студию!

Ну уж нет уж. Ты хочешь, чтобы за тебя делали твою домашнюю работу? Сам разберись в вопросе. Собственно, могу посоветовать изучить происхождение языков программирования. Фортран, Алгол, Smalltalk, Forth, Delphi — это только часть попыток придумать эти твои кубики. И каждый раз оказывалось, что без программиста — никак.

Почему — подумай сам.

Gudleifr> Именно в это и предлагаю поиграть, а не в надувание IT-щек.

Не надувай, кто же тебя заставляет.
   52.952.9
+
-
edit
 

Gudleifr

опытный

Sandro> Не понимаю, чем тут выделяется именно программирование.
Тем, что рутина (которой 99%) к программированию отношение имеет очень опосредованное.

Sandro> У меня несколько другие сведения по этому поводу.
¯\_(ツ)_/¯

Sandro> Ты хочешь, чтобы за тебя делали твою домашнюю работу?
Т.е. не можете... Ждем следующего.
   79.0.3945.8879.0.3945.88
+
-
edit
 

Sandro
AXT

инженер вольнодумец
★★

Sandro>> Не понимаю, чем тут выделяется именно программирование.
Gudleifr> Тем, что рутина (которой 99%) к программированию отношение имеет очень опосредованное.

И что ты называешь программированием, а? Я что-то не понимаю.

Sandro>> Ты хочешь, чтобы за тебя делали твою домашнюю работу?
Gudleifr> Т.е. не можете... Ждем следующего.

Могу. Но не хочу. Тем облее, что краткий ответ я тебе уже дал. Ты предпочёл его не заметить. Ну и смысл мне дальше время тратить?
   52.952.9
+
-
edit
 

Gudleifr

опытный

Sandro> И что ты называешь программированием, а?
Следствие 11: Программирование - есть создание кибернетических машин, максимум энтропии которых соответствует останову при получении правильного результата.

Sandro> Могу. Но не хочу.
Причины меня, пардон, не интересуют.
   79.0.3945.8879.0.3945.88
+
+1
-
edit
 

Sandro
AXT

инженер вольнодумец
★★

Sandro>> И что ты называешь программированием, а?
Gudleifr> Следствие 11: Программирование - есть создание кибернетических машин, максимум энтропии которых соответствует останову при получении правильного результата.

А чего уж ты не процитировал свою аксиому номер один, а?

Аксиома 1: Программистов не бывает. Есть только системщики и пользователи. Системщики бывают математиками или электронщиками, а пользователи - физиками или лириками.
 


Нда. Давненько я не читал такого ... гм ... даже не знаю, как назвать ... в общем, трансляции из альтернативной реальности.

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

И они не обязательно пишут программы. Процитирую признанного классика программирования:

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

Однако вскоре после начала перевозок пассажиров начались неприятности. Причина их крайне проста: о распоряжении ничего не знали на сортировке и считали все вагоны одинаковыми. В результате в некоторых поездах туалеты практически отсутствовали.

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

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

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

Теперь, когда все туалеты находились на равном расстоянии, руководство компании было уверено в успехе, однако жалобы от пассажиров продолжали поступать: в вагонах без туалетов они не знали, в каком из соседних вагонов туалет находится ближе. Поэтому в вагонах без туалетов было решено нанести надписи "Туалет", что потребовало ориентировать и вагоны без туалетов.

Технически это было уже невозможно. И вот тут кто-то заметил: если мы сцепим вагон с туалетом и вагон без туалета в пару так, чтобы туалет находился посередине, и никогда их не будем расцеплять, то сортировка будет иметь дело вместо N ориентированных объектов с N/2 симметричных объектов. Но это решение требовало и двух уступок: во-первых, поезда теперь могли состоять только из чётного количества вагонов (кого волнует, что кому-то может не хватить мест); во-вторых, туалеты были расположены на несколько неравном расстоянии (и тем более, кому интересен лишний метр).

Хотя во времена, когда случилась эта история, человечество ещё не знало ЭВМ, неизвестный, нашедший это решение, был первым в мире компетентным программистом.

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


Sandro>> Могу. Но не хочу.
Gudleifr> Причины меня, пардон, не интересуют.

Глухарь?
   52.952.9
+
-
edit
 

Sandro
AXT

инженер вольнодумец
★★

Sandro>> И что ты называешь программированием, а?
Gudleifr> Следствие 11: Программирование - есть создание кибернетических машин, максимум энтропии которых соответствует останову при получении правильного результата.

Забыл добавить: а как быть с программами, которые не останавливаются никогда?

Да хоть знаменитую 10 PRINT взять :P
   52.952.9
+
-
edit
 

Sandro
AXT

инженер вольнодумец
★★

Sandro>> Могу. Но не хочу.
Gudleifr> Причины меня, пардон, не интересуют.

А, дочитал тему на геймдеве до 4 страницы (Азы программирования (за поругаться) (4 стр) / Программирование / Форум / Флейм:

Gudleifr> Ничего я не буду искать. Мне чисто поржать.

Вот это надо было сюда написать. Сразу бы всё ясно было.
   52.952.9
+
-
edit
 

Gudleifr

опытный

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

Sandro> Процитирую признанного классика программирования.
Который был не "программистом", а математиком, над "программистами" издевавшимся. Что не помешало ему изобрести/причесать большинство фич современного программирования.

Sandro> Глухарь?
Т.е. уже я виноват в том, что Вы не можете дать мне ответ на конкретный вопрос?

Sandro> а как быть с программами, которые не останавливаются никогда?
А посмотрите, кстати, у упомянутого классика.
   79.0.3945.8879.0.3945.88
Это сообщение редактировалось 03.01.2020 в 14:42
+
-
edit
 

Sandro
AXT

инженер вольнодумец
★★

Sandro>> Просто некоторые не умеют писать программы, есть такая беда.
Gudleifr> Не встречал здесь ни одного такого.

А я встречал. ПРямо тут на форуме. Правда, тут они честно признаются, что не программисты.

Sandro>> Глухарь?
Gudleifr> Т.е. уже я виноват в том, что Вы не можете дать мне ответ на конкретный вопрос?

Я на него дал ответ. Ещё раз процитировать?

Sandro>> а как быть с программами, которые не останавливаются никогда?
Gudleifr> А посмотрите, кстати, у упомянутого классика.

Он не про это писал. А про детерминированность. 10 PRINT не останавливается никогда, и при этом приносит пользу, хоть бы и эстетическую.
   52.952.9
+
-
edit
 

Gudleifr

опытный

Sandro> А я встречал.
¯\_(ツ)_/¯

Sandro> Я на него дал ответ. Ещё раз процитировать?
Кубики в студию!

Sandro> Он не про это писал.
Ошибаетесь.
   79.0.3945.8879.0.3945.88
1 2 3 4

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru