Языки программирования для непрофессионалов

Беседы ни о чем

Re: Языки программирования для непрофессионалов

Сообщение KPG » 15 мар 2016, 11:15

Форум здешний малочисленный и думаю даже если нижесказанное кому то покажется крамольным или пафосным,
то сильно "ногами" пинать не будут :)
Мой выбор Форт (Forth) породившего большое количество малоизвестных канкатенавных языков
из которых можно выделить, например, Factor и 8th (синтаксис и семантика претерпели некоторые изменения)

Сравните решения на разных языках с сайта http://rosettacode.org/wiki/Rosetta_Code

Мои выводы:
1. Специализированные языки своей области предоставляют наиболее компактные решения.
2. Универсальные языки (общего C подобного дизайна) в разной степени удачности и избыточности могут создать требуемое решение.
3. Форт(Forth) тоже универсальный язык, но в силу своего дизайна и базовых возможностей "пытается' встроить в себя (через расширения)
необходимый уровень понятий для описания решения минимально избыточным способом, кроме того, что часть его возможностей
позволяют достаточно просто решить требуемую задачу у него есть механизм выполнения кода для задействования недостижимого уровня
макро возможностей в других языках.
4. Более "экзотичные" языки Пролог, Лисп ориентированные ориентированны на использование "частных" механизмов (вывод предикатов и работа с данными как списковыми структурами) для решения более нетривиальных задач не всегда присутствующих в программерской практике. :)

Группу языков типа TCL, Perl, Phiton, Lua и подобные c их "сильными" и "слабыми" сторонами оставляю для рассмотрения другим авторам :)

P.S. Но проблема универсальных языков отчасти даже не в них самих, а в той инфраструктуре уже созданной вокруг них (всяких фреймворков),
организаций, сообществ, тонны разных проектов (требующих поддержки) держащих их пользователей "за яйца".
Поэтому "простым" языкам (как они были спроектированы при их создании) остаются мелкие и средние задачи для решения.
Более крупные всё равно потребуют для своего решения разных "интеграционных" возможностей библиотек и.т.д.
И Форт в этом отнюдь тоже не оригинален и крупные проекты по меркам отдельного разработчика на нём создать можно.
(из свежих примеров - Форт "пользователь" сделал инициативным порядком кадастровую систему с близкими возможностями кадовских систем)
Последний раз редактировалось KPG 15 мар 2016, 11:29, всего редактировалось 3 раз(а).
KPG
Матерый даунгрейдер
 
Сообщения: 67
Зарегистрирован: 21 окт 2015, 21:53

Re: Языки программирования для непрофессионалов

Сообщение Gawobeka » 16 мар 2016, 18:32

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

Среди "офисного планктона" хватает достаточно соображающие людей. Но все же VBA и OpenOffice Basic, по моему мнению, не для этой категории пользователей. Во времена ДОСа выбор подобных инструментов был побогаче. А сейчас решили, что уровень владения компьютером неизмеримо вырос?
Аватара пользователя
Gawobeka
Мастер Даунгрейда
 
Сообщения: 293
Зарегистрирован: 08 дек 2012, 22:11

Re: Языки программирования для непрофессионалов

Сообщение KPG » 16 мар 2016, 22:08

Gawobeka писал(а):Среди "офисного планктона" хватает достаточно соображающие людей. Но все же VBA и OpenOffice Basic, по моему мнению, не для этой категории пользователей. Во времена ДОСа выбор подобных инструментов был побогаче. А сейчас решили, что уровень владения компьютером неизмеримо вырос?

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

Код: Выделить вс
nnCron бесплатен для граждан стран бывшего СССР при условии частного и некоммерческого использования. Для коммерческого или корпоративного использования программы нужно получить платную лицензию. Инструкции по платной и бесплатной регистрации nnCron даны в соответствующем разделе.


P.S. В рамках SPF4.20 пользователи разрабатывают для себя разноплановый софт (кадастровая CAD система, мониторинг технологического оборудования, управление CNC оконечным контроллером, редактор ударений ...), сам тоже экспериментировал с разными программными "утилитами",
а есть ещё и западные опенсорцные развиваемые Форт системы разного уровня и сделанные с использованием разных языковых средств. (Win32Forth, gForth, iForth, BigForth, eForth, Ficl, PFE, pForth, kForth, DX-Forth, Holon, Quest32, DeltaForth, ForthEC, RetroForth, RedаForth, Timbre и др. ...даже не перечислив что есть коммерческого и "мелкого" для всевозможных контроллеров и FPGA )
Частично это характеризуется Деревом Форт систем
Расширить ядро Форт системы можно до любого языка (догрузив или подключив расширение транслятора формул, Бейсик, ООП, OpenGL ... или пробросив интерфейс к dll библиотекам, компонентным технологиям ... или встроив Форт в само стороннее приложение написанное на другом языковом средстве) без необходимости его повторной пересборки.
В понимаемом базисе все Форт системы имеют понимаемую структуру построения в той или иной степени следующим Форт канонам. :)
Среди систем построенных на Форт принципах и разных языковых средствах есть и экзотические варианты.
Например проект Timbre это некоторый вариант системы построенной для трансляции Форт в С на использовании набора правил.
Есть также варианты С то Forth, например с использованием фронт енда для LCC компилятора (пробовал вариант С в SPF4), при этом слой рантайм поддержки С (stdlib) может быть сделан в разных вариантах на Форт, С или Asm.
Holon, например, имеет варианты (кроме DOS Forth) генерации Java классов и в другом варианте TCL/TK основу.
DeltaForth нацелен на использование C# интеграции.
gForth, BigForth, Ficl, PFE, pForth, kForth ... - реализация ядер на С.
еForth - минимален по количеству базовых низкоуровневых примитивов (на ассемблере целевого процессора) для его развёртывания.
Dx-Forth - один из вариантов поддерживаемых Фортов для DOS
ForthEC - кросс компилятор в целевой ассемблер сделан на языке Euphoria
retroForth, RedaForth - язык реализации FASM (reda4 довольно интересный позновательный проект)
Win32forth - один из самых пользовательскиориентированных для Windows
iForth, VFX Forth, SwiftForth, Quest32 - коммерческие Форт системы с разной степенью открытости исходных кодов и библиотечных файлов.
Тема Форт (Forth) тематики большая и "одним" постом не закрываемая (недостаточно раскрываемая) :)

P.P.S. Интересно (и если несложно) получить "стороннее" мнение также как читается и понимается статья в Википедиа и чем её желательно дополнить (даже в сравнении с другими её вариантами на других языках)
Последний раз редактировалось KPG 09 авг 2017, 10:41, всего редактировалось 8 раз(а).
KPG
Матерый даунгрейдер
 
Сообщения: 67
Зарегистрирован: 21 окт 2015, 21:53

Re: Языки программирования для непрофессионалов

Сообщение Gawobeka » 17 мар 2016, 16:40

Честно говоря, я хоть немного стал понимать, что такое Форт, лишь после того, как нашел следующее описание (автор mOleg):

"Основным понятием языка форт является слово. Каждое слово языка может быть исполнено, но не обязательно должно исполняться. Программа в форт-среде – это набор слов. Обычно для выполнения программы достаточно выполнения последнего определенного понятия ( слова). Форт-среда не разбирается в том, является ли очередное слово оператором языка или данными. Слова просто ищутся в списке, называемом словарем и при условии нахождения выполняются. Словарей может быть много, и словари тоже являются словами. Каждое новое слово добавляется в словарь с помощью уже существующих слов или их комбинации. Тот словарь, в который добавляется слово, называется текущим, а тот, из которого исполняется - контекстным. Современная форт-среда умеет работать с одним текущим и несколькими контекстными словарями, причем текущий словарь не обязан находиться в контексте, и список словарей, находящихся в контексте тоже не фиксирован. В отличие, например от Лиспа, базовый словарь форт-среды не является «суперсловарем», то есть не всегда находится в контексте, поэтому возможны неприятные ситуации, когда программист сам ограничивает знания системы словарем, в котором нет слов, позволяющих системе прийти в нормальное рабочее состояние. Этот же момент позволят создавать совершенно не связанные с базовой средой лексиконы – то есть полностью менять правила среды.

Любое слово можно условно разделить на две части: имя слова и содержимое слова. Содержимое слова тоже можно условно разделить на две части: исполнимую часть - код и неисполнимую часть – данные. В зависимости от типа слова содержимое слова может отсутствовать вообще, содержать только код или только данные."

Не знаю, как отнесетесь, но кратко и информативно (правдиво ли?) - Lurkmore: "Форт это просто такой низкоуровневый Лисп задом наперёд и без скобок" :)

Еще интересная мысль (Дмитрий Спицын): "Для тех, кто хочет изучать и использовать Ассемблер, я бы порекомендовал начать это с изучения Форта, как я в свое время и сделал. Результатом такого метода обучения будет намного более быстрое и качественное освоение Ассемблера".

Язык интересный, но я бы не назвал его простым. Хотя как подходить к обучению - начинать с простого и постепенно усложнять задачи или сразу по полной, по принципу "жить захочешь - сможешь".
Последний раз редактировалось Gawobeka 17 мар 2016, 19:13, всего редактировалось 2 раз(а).
Аватара пользователя
Gawobeka
Мастер Даунгрейда
 
Сообщения: 293
Зарегистрирован: 08 дек 2012, 22:11

Re: Языки программирования для непрофессионалов

Сообщение KPG » 17 мар 2016, 22:28

Gawobeka писал(а):Честно говоря, я хоть немного стал понимать, что такое Форт, лишь после того, как нашел следующее описание (автор mOleg):
Не знаю, как отнесетесь, но кратко и информативно (правдиво ли?) - Lurkmore: "Форт это просто такой низкоуровневый Лисп задом наперёд и без скобок" :)

Нормально надо к таким вещам относится :)
Скобки для мышления, на самом деле, избыточны и корни их в прививаемой привычке составлять математически подобные формулы, но язык Фортран, при этом, был "похоронен" низкоуровневыми возможностями Си и более академичным Паскалем.
В Форте даже низкоуровневые возможности достаточно легко понимаемы без необходимости "жёсткого" оперирования формулами.
Его как и Пролог, Лисп используют при моделировании разных проблемных инструментов. На MUD диалекте Форт подобного языка делали (может и сейчас делают) текстовые квесты. Есть MindForth Free AI Source Code for Robots., есть Grobots
...да мало ли ещё на что его не пробовали использовать. При этом он так и остаётся неизвестным языком (парадигмой) :)

Вот ещё одна точка зрения от автора SPF и программы eserv Идеи языка Форт :) (сказано, наверно, лет 20-ть назад)
Зачастую выстраивания работы со словарями не так необходимо во многих случаях, особенно динамический поиск по ним во время работы программы.
У Черезова, в бытность досовского форта SPF2.5 был сделан в нём оконный редактор на асинхронно событийном управлении контекста редактирования с иерархией прохождения событий в текущем контексте - такое динамическое ООП в стиле Смолток языка. Так вот у меня когда его взялся улучшать сначала было полное непонимание как это вообще может работать, но если "умудрится" выстроить логическую иерархию, что не всегда тривиально, то структура кода почти прозрачна и мало связана, при этом как всё это отлаживать тоже очень нетривиально и утечки памяти то там, то здесь могут возникнуть и возникали. :)
Но, начинал конечно, ещё с ДОС версии системы AstroForth (довольно "попсовой" по своим возможностям) с записью слов системы в текстовый блокнот-напоминальник. ("распрошавшись" c Ассемблером Z80, Турбо-Бейсик, Паскалем и Турбо-Си 2.0)

Gawobeka писал(а):Еще интересная мысль (Дмитрий Спицын): "Для тех, кто хочет изучать и использовать Ассемблер, я бы порекомендовал начать это с изучения Форта, как я в свое время и сделал. Результатом такого метода обучения будет намного более быстрое и качественное освоение Ассемблера".

Да, в использовании Форт это неплохое подспорье. Форт, в большей степени, "увёл" меня c "тропы" использования чистого ассемблера. :)

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

Он многогранен при лаконичности заложенных в него принципов и идей.
И к тому же есть уже немало "потомков" в стиле современных "плюшек" авторских дизайнов Форт подобных, а чём то более успешных языков.
При наличии желания и времени можно и с ними поэкспериментировать. Будут ли по ним когда либо изданы книги, при доступности i-neta, ещё неизвестно.
Вспомнил такое высказывание в заметке-статье на хабре Тихое большинство экспертов
Может это частично объясняет, что есть много хороших реализаций Форт систем, а комплексных "проблем" решённых на них и опубликованных в сети почти нет, если специально не изучить этот вопрос. :)

P.S. Вообще, всё что связанное по ссылка так или иначе пересекающее с Форт тематикой, было много размещено мной в рамках Рускоязычного Форт форума :)
Последний раз редактировалось KPG 17 мар 2016, 22:56, всего редактировалось 13 раз(а).
KPG
Матерый даунгрейдер
 
Сообщения: 67
Зарегистрирован: 21 окт 2015, 21:53

Re: Языки программирования для непрофессионалов

Сообщение Freeman » 17 мар 2016, 23:12

Gawobeka писал(а):Результатом такого метода обучения будет намного более быстрое и качественное освоение Ассемблера

Ну да, после Форта ассемблер -- простой язык. 8-)
Разработчик языка программирования Кантор
Аватара пользователя
Freeman
Мастер Даунгрейда
 
Сообщения: 646
Зарегистрирован: 06 дек 2012, 05:49
Откуда: Санкт-Петербург

Re: Языки программирования для непрофессионалов

Сообщение KPG » 01 апр 2016, 19:16

Freeman писал(а):
Gawobeka писал(а):Результатом такого метода обучения будет намного более быстрое и качественное освоение Ассемблера

Ну да, после Форта ассемблер -- простой язык. 8-)


Видео обзор Форт для МК152/161 (поверх штатного ПО) :)

P.S. Wiki данного проекта
Кстати попробовал транслировать FASM код внутри SPF4 с помощью Fasm.dll (код компилируется внутри SPF4 , но какую то ошибку на макро тексте даёт пока не разобрался)
Последний раз редактировалось KPG 01 апр 2016, 19:22, всего редактировалось 2 раз(а).
KPG
Матерый даунгрейдер
 
Сообщения: 67
Зарегистрирован: 21 окт 2015, 21:53

Re: Языки программирования для непрофессионалов

Сообщение Gawobeka » 28 сен 2016, 20:33

uav писал(а):Т.к. я начинал с Pascal и Basic - их и порекомендую.
Жаль только, что версии для DOS сейчас уже не актуальны...

Кстати, в лекции на Малом ШАДе https://www.youtube.com/watch?v=Hozqp7P6cJs был задан вопрос - если Вы совершаете космический полет, на каком бы языке должен программироваться корабль. И ответ: не Java и не C++, а как ни странно - Паскаль (хотя лектор его и не любит), как самый надежный. Кстати, в сторону Питона он тоже камень бросил - легко пропускаются ошибки.

Вообще, хорошее выступление - правильный язык, широкий кругозор, взвешенная позиция.
Последний раз редактировалось Gawobeka 28 сен 2016, 21:27, всего редактировалось 1 раз.
Аватара пользователя
Gawobeka
Мастер Даунгрейда
 
Сообщения: 293
Зарегистрирован: 08 дек 2012, 22:11

Re: Языки программирования для непрофессионалов

Сообщение KPG » 29 сен 2016, 10:37

Gawobeka писал(а):Вообще, хорошее выступление - правильный язык, широкий кругозор, взвешенная позиция.

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

P.S. Про Перл сказал, что не знаю и не знаю как оно вообще там устроено, хотя вроде уже Перл 6 выкатили, а создатель языка
в одном из интервью сказал, что не начав изучать японский язык то не смог бы предположить, что в нотации Полиз можно мыслить (привёл Forth PostScript в пример) :)
Для школьников, конечно, это пройдёт на ура.
Элемент ассемблера add ... mov ... языки "высокого уровня" превратили в x = add введя дополнительную фрагментацию кода - использование промежуточных переменных не завязанных на железные регистры ассемблера.
Пол Грэхам о будущих языках программирования определил несколько критериев "выживаемости" будущих языков.
P.P.S. От Куратор академических программ Яндекса хотелось бы услышать более взвешенное выступление, даже для аудитории школьников
Про Питон вообще не понял чем он "кривее" Си (для Питона не может быть применён аппарат статистического анализа?) :)
Главный вывод лектора, что без инфраструктуры Фреймоворков на решение определённых задач трудно в современном IT мире.
Хочешь денег - учи используемые фреймворки и станешь счастливым программистом :)
Есть моменты, когда лектор "теребит" нос, то это признак лукавства-вранья :) Про жестикуляцию не знаю, но лектору комфортно выступать перед школьниками.
Про "киты" функциональных языков не дан ответ.

Около языковая тематика (2-й половины выступления) более интересна.
Последний раз редактировалось KPG 29 сен 2016, 12:10, всего редактировалось 18 раз(а).
KPG
Матерый даунгрейдер
 
Сообщения: 67
Зарегистрирован: 21 окт 2015, 21:53

Re: Языки программирования для непрофессионалов

Сообщение Nika » 29 сен 2016, 12:39

KPG писал(а):Fortran дословно расшифровывается, как транслятор формул и он решал задачи, прежде всего, вычислительного порядка.
Некоторые вещи в Фортран были мощными - общие области, вычислительные массивы ...
Далее в Бейсике очень много операций работ со строками, а Си перевёл этот уровень на возможность работы непосредственно
с памятью где строки и находятся и "отвязался" от знания непосредственых адресов хранения данных, ввёл типизацию ячеек памяти.
(ну и убрал Goto уровень).
Сама по себе функция трансляции формул есть в любом современном высокоуровневом языке программирования, в том числе, и в Си.
Что касается "убирания Goto-уровня в Си" - то никто его не убирал, всё имеется, как положено.
Просто в Си ещё имеются операторы "while" и "do", которые, в некоторых случаях, действительно, удобнее, чем прыжки.
Но одно другому не мешает.
И вообще, эти споры по поводу достоинств фортрана утихли уже лет 20 назад.

"Современный язык программирования для непрофессионалов" это в любом случае что-либо Си-подобное,
много разных подобных вещей сейчас имеется в наличии.
Последний раз редактировалось Nika 29 сен 2016, 12:42, всего редактировалось 2 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 590
Зарегистрирован: 17 окт 2013, 00:21

Re: Языки программирования для непрофессионалов

Сообщение KPG » 29 сен 2016, 14:12

Nika писал(а):И вообще, эти споры по поводу достоинств фортрана утихли уже лет 20 назад.

Никто и не спорит по поводу достоинств Фортрана, только небольшие уточнения методологического характера :)
KPG
Матерый даунгрейдер
 
Сообщения: 67
Зарегистрирован: 21 окт 2015, 21:53

Re: Языки программирования для непрофессионалов

Сообщение Nika » 29 сен 2016, 15:28

Понятно..
Nika
Мастер Даунгрейда
 
Сообщения: 590
Зарегистрирован: 17 окт 2013, 00:21

Re: Языки программирования для непрофессионалов

Сообщение Gawobeka » 29 сен 2016, 15:43

KPG писал(а): Как то поверхностное описание. ... Для школьников, конечно, это пройдёт на ура.


Как раз адекватно школьникам выступающий и строил свой доклад. Профессионалы, конечно, найдут у него много спорных моментов.

Можно спорить с его оценкой разных языков (тем более он не был категоричным), но выступающий акцентирует внимание и на многих околокомпьютерных вопросах, в том числе психологических, которым специалисты, к сожалению, придают мало значения. К примеру, кому отдаст предпочтение толковый руководитель организации при закупке программного обеспечения: гениальному кодеру-одиночке или большому коллективу "ломовых лошадок"? Я вот реальную ситуацию представляю, поэтому несколько смешно было видеть кучу эмоций в теме на fdd5-25 - почему подряд отдали дряхлым FoxPro-шникам, а не суперсовременным навороченным гениям. И куча других моментов, о которых следует задуматься еще на этапе студенчества.

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

Nika писал(а): "Современный язык программирования для непрофессионалов" это в любом случае что-либо Си-подобное

Интересно, в каком плане: как компилируемый язык, как императивный язык, как статически типизированный язык, как язык "среднего уровня" или что-то еще?

По-моему, важная мысль автора - выбираемый язык должен быть расширяемым за счет возможности подключения дополнительных библиотек, в том числе написанных и на других языках, а не быть "вещью в себе". Тут Питон, безусловно, рулит )
Аватара пользователя
Gawobeka
Мастер Даунгрейда
 
Сообщения: 293
Зарегистрирован: 08 дек 2012, 22:11

Re: Языки программирования для непрофессионалов

Сообщение Nika » 29 сен 2016, 16:00

Gawobeka писал(а):
Nika писал(а): "Современный язык программирования для непрофессионалов" это в любом случае что-либо Си-подобное
Интересно, в каком плане: как компилируемый язык, как императивный язык, как статически типизированный язык, как язык "среднего уровня" или что-то еще?
Самому "непрофессионалу" это безразлично.
Склоняются сейчас к использованию интерпретаторов, ведь машины теперь пошли довольно быстрые.
Последний раз редактировалось Nika 29 сен 2016, 16:00, всего редактировалось 1 раз.
Nika
Мастер Даунгрейда
 
Сообщения: 590
Зарегистрирован: 17 окт 2013, 00:21

Re: Языки программирования для непрофессионалов

Сообщение Gawobeka » 29 сен 2016, 16:41

Разницу в статической и динамической типизации непрофессионал поймет быстрее всех остальных вопросов )
Аватара пользователя
Gawobeka
Мастер Даунгрейда
 
Сообщения: 293
Зарегистрирован: 08 дек 2012, 22:11

Пред.След.

Вернуться в Флейм

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron