LINUX.ORG.RU

PascalABC.NET стал свободным ПО

 , ,


2

2

PascalABC.NET — диалект языка Pascal для платформ .NET и Mono, а также компилятор и среда разработки для него. Разрабатывается в Южном Федеральном Университете и используется для обучения программированию. Среда разработки работает только под Windows, но компилятор работает и в GNU/Linux под Mono.

Долгое время проект имел проприетарную лицензию (распространялся при этом бесплатно), но 28 августа 2015 года (одновременно с выпуском версии 3.0) переведён на GNU LGPL.

Особенности (с официального сайта):

  • Ряд расширений языка Pascal, в числе которых оператор foreach, внутриблочные описания переменных, автоопределение типа при описании, встроенные множества произвольных типов, упрощенный синтаксис модулей, методы в записях, операция new для создания объектов, определение тел методов внутри классов, безымянные классы, автоклассы, целые произвольной длины.
  • Самые современные средства языков программирования: обобщенные классы и подпрограммы, интерфейсы, перегрузка операций, λ-выражения, исключения, сборка мусора, n-мерные динамические массивы.
  • Генерация эффективного кода для платформы .NET.
  • Высокая совместимость с Delphi.
  • Высокая скорость выполнения программ.
  • Возможность доступа к огромному количеству .NET-библиотек от контейнерных классов до средств работы с сетью.
  • Среда разработки с встроенным отладчиком, обеспечивающая подсказки по коду, переход к определению и реализации подпрограммы, шаблоны кода, автоформатирование кода.
  • Встроенный в среду разработки дизайнер форм для быстрого создания оконных приложений.
  • Простая и эффективная растровая графическая библиотека.
  • Средства параллельного программирования в виде директив OpenMP.
  • Встроенный электронный задачник Programming Taskbook.
  • Модули исполнителей Робот и Чертежник, используемых в школьной информатике.
  • Механизм проверяемых заданий, обеспечивающий автоматическую постановку и проверку заданий.
  • Наличие Web-среды разработки WDE, позволяющей запустить программу прямо из окна браузера.
  • Возможность опубликовать в интернете ссылку на файл, сохраненный в Web-среде разработки.
  • Возможность запуска консольного компилятора под Mono в современных версиях Linux.
  • Использование многолетнего опыта обучения программированию при создании языка и среды.

Репозиторий на GitHub

>>> Подробности

★★★★

Проверено: fallout4all ()
Последнее исправление: fallout4all (всего исправлений: 10)

Ответ на: комментарий от anonymous

Паскаль и ОСеписательство

Ну, папа Паскаля сотоварищи на его диалектах, начиная с Модулы, регулярно ОСи пишет, и процесс всё ещё продолжается.

Кстати на суде между MS и Apple Computers, Вирт выступил свидетелем защиты «мягких». Показав образец собранного им со студентами первого персонального компьютера с оконной ОСью (то что делал Кей, у которого все они учились, в Ксероксе и на Смолтоке всё таки персоналкой назвать было сложно).

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

В детстве прочитал Kernighan & Ritchie The C Programming Language за 2 дня и язык мне очень понравился так как он простой, логичный и последовательный в отличии от паскаля и бесика которые толком так и не изучил. После C как то так и другое ужасно не нравилось, ощущение что это какое то нагромождение костылей и бессмысленных ограничений. Кроме того не зря синтаксис C используется во многих современных ЯП потому что он простой и удобный.

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

кокой фонтаст , осебенная логичность и последовательность в C с auto|static и областями видимости блок|функция|файл и временем жизни

ну а уж typedef как спецификатор памяти так вообще логикаТМ.

ну и отсутствие == для struct

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

Ничто из перечивленного не беспокоит, напротив выглядит вполне логично и последовательно.

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

Мозгов нет в таком возрасте на грамотное изучение ПК. Где ты семилетних первоклашек видел, которые программируют?

по поводу «мозгов нет» — отчасти согласен. мозгов нет, да. но только не у детей, а у учителей, которые не умеют их учить. просто не знают как.

из книги А. И. Левенчука «Системно-инженерный образ мышления» (синопсис: стр. 28)

Дошкольная алгоритмика
<...>
Итак, в конце восьмидесятых стало очевидным, что в сложных технических устройствах завелось что-то трудноуловимое, что уже не охватывается мышлением среднего человека. Почему только тогда? Вспомните 1985-й год, где в СССР были персональные компьютеры, хоть какие-нибудь? IBM PC выпускался на Западе только с 1980 года, в СССР его практически не видели ещё. Какого размера тогда были доступные компьютеры? Если не считать простейших калькуляторов, то самая маленька СМ-4 была размером со стенной шкаф. Но вычислительная мощность у неё была несопоставимо меньше, чем у меня сейчас в телефоне – в разы и разы меньше. Если взять разрешение экрана современного телефона, то в крупных научных институтах пикселей на экранов всех компьютеров, наверное, не хватало бы в 1985 году, чтобы сравниться с числом пикселей экрана этого карманного телефона. Я уже молчу про цветные пиксели, тогда ещё экраны были главным образом монохромными. Компьютеры ставились в машинных залах с фальшполами, это был 85-й год. У меня самого СМ-4 была с номером 00047, в 1982 году. Это как раз вот 82-й год, а с сентября 85-го решением политбюро ввели информатику в школах СССР. До власти дошло, что что-то такое происходит в военной сфере именно потому, что компьютеров мало и простые солдаты недостаточно обучены для адекватной работы операторами сложной военной техники. Принимались безумные решения по линии «догнать и перегнать», то есть не развивать свои разработки, великолепную машину БЭСМ-6, а «слизать» мейнфреймы IBM. В этот момент уже начали выпускать и мини-компьютеры. Та самая СМ-4 – это была копия PDP-11. Наши ЕС ЭВМ – это IBMsystem/360. И в этих условиях вся страна вдруг начала учить информатику. Никто не знал, как её учить. В МГУ на мехмате собралась группа «Аттик», которая разработала вузовский учебник информатики, а затем разработала школьный учебник информатики и определила в нём, в чем, собственно это обучение информатике заключается. Выяснилось, что в голове среднего человека действительно нет сформированного куска мозга, умеющего выполнять вполне определенные операции, связанные с планированием действий в неопределенном будущем. То, что я сейчас вам буду говорить, это и есть вот настройка мозга на какую-то определенную деятельность. Мозг настраивается на деятельность, «становится на рельсы»  — и далее по этим рельсам привычно выполняет все необходимые операции.

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

Выяснилось, что любой ребенок способен рассказать последовательность действий, какую он видел раньше, и последовательность действий, которую он планирует развернуть прямо сейчас, глядя на доступные ему предметы этой деятельности. Он может рассказать плант того, как он сходит за хлебом прямо сейчас. Но если попросить какого-нибудь ребенка, чтобы он внятно рассказал, как сходить за хлебом завтра, то будет затык. Ему надо будет перенестись мозгом в будущее и в будущем начинать разворачивать какой-то план, план будущего в будущем. Дети тут застывают после первого действия – там же последовательность: одеться, узнать у мамы, чего нужно взять, проконтролировать достаточность денег, выйти из дома, пойти потом направо или налево, и всё это должно быть развёрнуто в будущем.
Если их сбить с толку вопросом «а если там перекопали, что ты будешь делать?», то происходит полная остановка деятельности. Ибо появляются развилки условных действий «если перекопали, то обходишь, иначе идёшь как обычно». Эти формулировки детям даются не так легко, как может показаться, особенно если они вложенные.
Этому «составлению плана-в-будущем» не учат на уроках физики, не учат на уроках алгебры и геометрии. Вот этому планированию с развилками, разворачиванию действий в неопределенном будущем, процессной работе не учит ни один школьный предмет. Ну, может быть, некоторое общее умение что-то спланировать в неявной форме у учеников и формируется стихийно, но проблемы с формулированием хоть сколь-нибудь сложных планов и записью этих планов не решаются.

Школьная алгоритмика – это ровно про это умение. Люди из группы «Аттик» пишут школьный учебник информатики, о целях которого говорят: «учить надо составлению планов в неопределенном будущем». Они простейший алгоритмический язык, который так и назвали – «школьный алгоритмический язык» Правильное название – Ершол (в честь академика А.П.Ершова, который этот язык придумал, и неформально так этот язык все и называют). Язык не меняется уже двадцать пять лет сейчас ЕГЭ по информатике принимают на Паскале, Си и Ершоле.
Люди из группы «Аттик» сформулировали, чему учить, и попытались понять, как учить. Они придумали методику обучения и попробовали учить сразу во всех классах — с первого класса по 10-й класс. Обнаружилось (последним мне об этом говорил Сергей Бебчук, работавший с одарёнными детьми), что до шестого класса детей алгоритмике учить бесполезно, а начиная с седьмого класса обучение происходит без особых трудностей. На основе этих экспериментов было принято решение, что обязательное образование по информатике проходит, начиная с седьмого класса. Учебники алгоритмики были написаны именно для 7-го класса, тираж только учебника Кушнеренко-Лебедева-Сворня был больше 10 миллионов экземпляров.

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

Курс алгоритмики, который считался на тот момент курсом высшего образования, в существенной его части был опущен до уровня курса для седьмого класса. В те бескомпьютерные времена были легенды о соревнованиях между учениками, которых учили алгоритмике с компьютерами и без компьютеров. Выяснилось, что ученики тех классов, кто учили вот школьный алгоритмический язык без компьютеров (с доской, тряпкой и листочками бумаги), часто побеждали учеников тех классов, которые учились с компьютерами. Почему? Для алгоритмики важно, чтобы в голове были сформированы навыки правильных мыслительных операций, чтобы в голове проложились рельсы, по которым двигается мышление. А с инструментом, или без инструмента – для скорости мышления это уже неважно. То есть вам поставили какой-то особый тип мышления, и это мышление начало работать, вы можете решать задачи в какой-то предметной области. В случае алгоритмики вы можете разворачивать какие-то конструкции с ветвлениями, у вас в голове появляется понятие последовательности, понятие цикла, понятие ветвления, условного оператора, понятие логических переменных, сложных условий. И когда это всё у вас в голове есть, вам все равно, на каком языке писать, и какие именно алгоритмы или планы писать.
Это формулирование учебного предмета школьной информатики происходило примерно с 1985-го по как раз 1992-й, когда в стране развалилось вообще все и дальше долго катилось только по инерции. Все научные коллективы ушли в бизнес или уехали за рубеж, так что исследованиями просто некому было заниматься. Школьная информатика так и застряла на уровне преподавания в седьмом классе.

Прошло 20 лет, и в прошлом году мне люди из той команды «Аттик» говорят: «У тебя дитенок во втором классе? Мы тут вот программку сделали, ты ему задачки с этой программкой дай порешать. Он сможет, эти задачки мы вообще для детского сада выдумывали». Дал я дитенку эти задачки, смотрю, они действительно, простые. Я сообщаю: «Ребята, задачки эти мой дитенка решил решил». И тут они говорят: «А теперь дай ему наши давно известные задачки для 7-го класса». Я пытался возразить, что терпеливо жду, пока он дорастет до 7-го класса, потому что до того момента учить алгоритмике бесполезно. Они уговорили меня попробовать. Я исключительно из уважения решил попробовать.

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

День или два ушли у меня на объяснение того, что в «детсадовской» программке надо было мышкой кликнуть, а затем перетащить какую-нибудь команду- стрелочку в нарисованную ячеечку для команды, а в программе для седьмого класса нужно было словом эту команду написать. Например, цикл для детсада – это поместить значок «повторителя» в ячейку для повторителя команд, а тут начало цикла нужно было словами выражать в редакторе текстов. Через несколько часов буквально, у дитенки в голове что-то щёлкнуло – он понял, что эти вот операции мышкой с командами-картинками и ячейками, и операции с написанием слов – это одни и те же операции. И тут же решил первые задачи курса Ершола для седьмого класса. Я ему следующие подсунул, он и их решил. А когда я на больную голову вечером понял, что я какую-то задачу сам не могу решить минут 20 уже, когда у дитенки случился на какой-то задаче затык, я понял, что в этой задаче были уже какие-то уже рекурсии вложенные, штук пять или шесть подпрограмм, и я вообще не понимаю, как мой дитенка добрался до решения подобных задач. Я только тогда начал интересоваться, что это за задачи мне дали.

Выяснилось, что задачи эти для физматшколы, что было уже несколько поколений технологии обучения алгоритмике для седьмого класса, и семиклассников таки научились быстро учить писать программы на Ершоле. Но почему эти задачи смог решать мой второклассник?! Выяснилось, что через 20 лет произошло то же самое, что произошло с делением в итальянских университетах. Люди из постепенно разобрались с тем, как нужно делить, и после этого начали этому обучать других. Сначала студентов, а не только философов и докторов, а потом – вот у нас сейчас деление проходится чуть ли не в первом классе школы.
Так и группа «Аттик» сумела понять, как учить информатике, и добавка решения нескольких задач в хитрой программе с командами-картинками и ячейками для этих команд-картинок вдруг обрушила тот порог, который не давал учить алгоритмике маленьких детей.
Выяснилось, что в обучении алгоритмике есть три существенных части, которые нужно учитывать. Первая часть – это, собственно, алгоритмическое мышление, это вот те самые рельсы в мозгу, которым нужно научить. Вторая часть – это синтаксис языка программирования, потому что алгоритм нужно как-то выражать, и без синтаксиса конктретного языка его не выразить. Третья часть – это необходимость работы алгоритмического мышления с объектами из какой-то среды, и поэтому учить на языках чисто процедурных нельзя, а надо подняться хотя бы на ступеньку так называемых «пакетных» языков типа Модула или Ада. Замечу, что речь даже не идет об объект-ориентированном современном программировании, это более элементарный уровень. Для школьного алгоритмического языка эта «пакетность» была сформулирована как необходимость наличия какого-то предметного мира, и связанного с этим миром исполнителя (а программное средство, поддерживающее этот подход назвали КуМиром – Комплектом Учебных Миров).
Раньше считалось, что учить алгоритмику нужно на примере математики. Люди из группы «Аттик» сказали, что нужно мир математики заменить на мир двигающегося на клетчатом поле робота с командами «вверх», «вниз», «влево», «вправо», «закрасить клетку». Я думаю, это многим знакомо, потому что я рассказываю самый обычный школьный курс для седьмого класса.

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

Что же произошло в 2011 году? Люди из группы «Аттик» сказали: давайте мы оставим минимум понятий, необходимых для программирования – последовательность команд, подпрограмма, цикл «раз», условный оператор.
Необходимость освоения синтаксиса по возможности исключим, язык у нас будет графический – нарисованные плашки с иконками-командами нужно будет укладывать мышкой в фиксированный набор ячеек для команд. При таком подходе можно учить даже тех, кто читать не умеет! «Вот эта плашка-стрелочка заполняет вот это вот место»  — вот и весь синтаксис. Мир был сделан совсем маленьким, команд движения роботом стало даже не четыре (по направлениям), а три (только «вперед» и повороты вправо и влево). И вот этим крохотным синтаксисом в крохотном мире смогли овладевать дети в детских садах, и не только в подготовительной группе, но даже и в старшей.
Как сказала одна из принявших участие в эксперименте воспитательниц, «я в первый год не верила, что вообще дети-шестилетки могут освоить оператор цикла, я думала, что их предел – только последовательность команд. На второй год я поняла, как этому циклу шестилеток-подготовишек учить, и теперь верю, что научить можно всех шестилеток. А эксперименты мы ведём уже со старшей группой, и эти эксперименты успешны». На моих глазах, глазах одного поколения, вузовский курс (я учил программирование на химфаке в 1975 году примерно в том же объеме, какой сейчас обсуждается для начальной школы) был опущен не только до уровня средней школы, но и до начальной школы, а большими кусками и до детсадовского уровня.

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

И если раньше это называлось «школьная алгоритмика», то появляются первые работы, первые доклады об успехах, в которых закрепляется термин «дошкольная алгоритмика». Алгоритмика – это ведь не просто расхожая уже «информатика для малышей», понимаемая как крайне упрощенная «логика» с задачками типа «вот уточки розовые, уточки желтые, вперемешку, найди общий признак и рассортируй на две кучки». Да, нынешние учебники «Информатика» в большинстве своём вообще не содержат алгоритмики, которая про составление и записи планов действий в неопределенном будущем. В «дошкольной алгоритмике» дети реальные программы пишут, причем не все взрослые такие программы смогут написать, смогут решить предлагаемые дошколятам задачи. Почему? У этих взрослых в голове просто нет этих «рельсов для мышления» в части алгоритмики. Когда с простейшим синтаксисом и учебным миром мы проходим ступенечку понимания с маленькими детками и кладём первый участок этих «рельс алгоритмического мышления», то дальше оказывается возможным пройти и весь курс седьмого класса. Секрет был просто в облегчении прохождения маленькой первой части большого сложного курса. Дитенка не может сразу одолеть сложный текстовый синтаксис, сложный мир робота, понятия алгоритмики. А упрощённый синтаксис и упрощенный мир на меньшем числе операторов алгоритмического языка он одолеть может, и после одоления первой ступеньки этой лестницы сложности дальше легко проходится вся лестница – до самой её вершины. На это изобретение ушло двадцать лет, а без первой ступеньки вся лестница была недоступна.
Мое утверждение в том, что системная инженерия – это вот такие же «рельсы в мозгу» для работы со сложными техническими системами. Если вы перестраиваете ваши мозги на основании курсов системной инженерии, прокладываете в мозгах «рельсы мышления системного инженера», то по окончании учебного курса в вашей голове вы сумеете удерживать как целое более-менее большие системы. Ну, а когда дойдет до уровня искусства, ибо этот уровень неразгаданного ещё мастерства всегда есть, выяснится, что системы, которые у вас удерживаются в голове как целое, много больше, чем те системы, которые удерживаются в голове самоучек, которые выросли в системных инженеров как Кулибины, сами по себе.
Почему? Ну, потому что образованный Кулибин, он совсем гениальным Кулибиным будет, если он хорошо образован. А необразованный Кулибин имеет потолок в своей работе, поэтому ракеты у него время от времени будут взрываться и не долетать до той точки, куда надо.

Обучение просветлению

и т.п. про системную инженерию как образ мышления.

порядок бьёт класс, а классный порядок бьёт вообще всё :-)

и про практика=дисциплина+технология

anonymous
()
Ответ на: Паскаль и ОСеписательство от be_nt_all

Ну, папа Паскаля сотоварищи на его диалектах, начиная с Модулы, регулярно ОСи пишет, и процесс всё ещё продолжается

+1. вот ссылки, если кто не видел:

публикации Вирта и Гурткнехта про «проект Оберон» — книжка с исходниками.

Название: Разработка ОС и компилятора. Проект Оберон Автор: Вирт Н., Гуткнехт Ю.
Страниц: 558
Год издания: 2012
ISBN: 978-5-94074-672-0

в СССР проект Кронос, МАРС про ОС на Модула-2 :1 2 3

статья на русском про «проект Оберон» — «разработка ОС с нуля».

статья на хабре про «Оберон 2013».

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

консольный компилятор есть отдельный форк блекбокса. или ищи более современные компиляторы Oberon07, Oberon2013.

вот тут точно есть.

впрочем, можно и блекбокс прикрутить. см там же Игры/Samurai топик на форуме — как там собирается система, без лишних модулей, только движок игры на SDL.

тот же Олег с форума пилит свою «кроссплатформную» сборку блекбокса, с консольным компилятором Oberon07 «из коробки»: ссылка

(** капча: retrocession **)

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

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

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

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

мануалов не было никаких, естественно. тем прикольнее было нащупать вслепую.

были времена, когда настоящие мужыки сами себе спектрумы паяли, ога :-)))

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

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

всё возможно — если достаточно сильно захотеть.

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

Зачем обучать языку, который с вероятностью близкой к 100% не будет востребован выпускниками на практике?

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

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

Для этого есть КуМир.

А он живой? Где-то используется? А как у него с фичами по сравнению с... ну пусть будет awk или lua?

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

Михалкович преподаватель математики и программированию. Собственно не английского! Вот он и делает в рамках своей компетенции.

А вы с ним знакомы? Мне интересно, почему он только сейчас решил перейти на свободную лицензию и есть ли планы сделать так, чтобы и среда тоже запускалась на GNU/Linux? А каковы причины, почему она не запускается сейчас?

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

Почему паскаль, а не scheme, python, scratch и его клоны, в конце концов? Паскаль не проще, менее выразителен и едва ли применяется на практике.

А почему не КуМир?

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

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

Я у него учился. Но сейчас уже лет так 5 его не видел. Думаю он просто не задумывался над лицензией.

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

питон не годится потому что динамический и без строгой типизации

Ты безграмотен. В нём строгая типизация.

почему не КуМир?

Потому, что он сорт scratch'а.

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

а он живой

Однозначно.

где-то используется

В школах же. Впрочем, что-то серьезное на нем, конечно, не пописать, но библиотеки ввода-вывода и 1.5 учебных алгоритма имеются. В ГИА задание 20.2 дается именно на нем (20.1 на Pascal).

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

Не знаю, что за ГИА, но а что не даёт на нём писать серьёзные вещи? Он разве не алгоритмически полон?

На brainfuck и то многое можно написать.

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

не знаю, что за ГИА

Экзамен в 9 классе.

но а что не дает

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

алгоритмически полон

Полон, судя по документации к среде и языку.

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

питон не годится потому что динамический и без строгой типизации

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

т.е байт-код - как хост машину эмулируемую на реальном x64

как раз таки c id(name) в питоне в отличии от языков компиляции (в Си как наиболее характерном примере :

int [10]a;
int *p=a;

есть чёткость в разделении имя -значение в отличии от вышеприведённого примера в С где a это компайл-тайм значение-константа.

byte(bin(10)) :)

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

ну называет строгой типизацией постоянство(на всём протяжении времени жизни имени) домена значений имени :)

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

? --- это так главная программа, так надо, не думай об этом. Что такое «\n»? --- символ конца строки, но почему он состоит из 2 символов? --- потому что он невидимый на самом деле, в общем, так надо! Что такое

Ну вот насчёт конца строки мне наоборот понравилось и показалось более логичным, разве что неявное преобразование в \r\n в виндоподобных ОС не очень хорошо.

Думаю, это всё можно объяснить — что когда ОС запускает программу, она вызывает её функцию main() и получает целочисленное значение, которое принято использовать как индикатор (не)успешного завершения. Это наоборот логичнее чем как в паскале.

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

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

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

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

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

нормальные люди сконвертировали это убожество, бинарный формат исходного кода .odc в нормальный текстовый .cp. Оберонщики всё не могут понять, что бесполезно иметь исходный код в бинарном виде, который может редактировать только один единственные редактор (собственно этот самый Blackbox). Это как писать код в Word-е.

Бинарный исходный код? Оксюморон, однако.

Интересно, чем они это обосновывают?

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

обосновывают компонентной структурой — также, как в Compound Document, OLE из винды можно «эмбеддить» COM-объекты, вот ровно также можно виджеты (вьюшки), компоненты на BlackBox Component Pascal вставлять в Compound документы .odc.

то есть: открываем .odc документ. в него уже встроен «замороженный» персистентный объект на обероне, с сохранением состояния (куда угодно на самом деле, хоть в базу данных). можем у этого объекта двигать за контролы, при этом состояние автоматически обновится, пересохранится при пересохранении всего CompoundDoc-а целиком.

точно так же можно встраивать и COM OLEVIEW объекты, и писать их на том же BlackBox.

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

в исходниках на BBCP можно после MODULE unit ... END unit. вставлять что угодно — например, компонент «коммандер» который выглядит как:

^Q unit.DoSomething [ a b c ] — с параметрами,

или без параметров как ^Q unit.DoThis

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

получается тоже самое, что и в REPL лиспа — тестирование на лету.

только с одним мышекликом.

текст вообще хранится как модель, в духе MVC (но там свой паттерн, Riders/Cariers, типа каретка на машине Тьюринга).

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

см. Клеменс Шипёрски, «КОП, или компонентно-ориентированное программирование».

--

я вот сейчас подумал, что в принципе и Literate Programming подход, например Emacs org-mode babel — это тоже про это же самое.

то есть: если научить «компилировать» weave/tangle, export/publish в другие форматы, виндовых блобов типа IStorage OLEVIEW Compound Document, то можно генерировать компонентные документы сразу из LitProg модели.

а если ещё и научиться назад «декомпилировать» untangle из CompoundDoc в текстовый .org (у него регулярная структура, а разные типы объектов можно вставлять как разные :PROPERTIES:), то можно назад собирать из документов в org-mode babel модель.

например, GNU Skribilo делает в принципе что-то похожее — только транслирует из .org и/или, S-выражений в lout/latex/odf/xml/*свой формат*

вот тут надо бы написать два транслятора: в/из CompoundDoc из/в текстового .org файла.

затем можно текстовые исходники в виде .org файлов из модели сделать в метамодель: чтобы работали подстановки блоков кода <<другойБлокКода(параметры...)>>, для tangle.

получается метапрограммирование на таких Literate Programming кусочках.

вот, а в BlackBox почти то же самое, только всё вручную.

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

можно сделать ту же идею, только не гвоздями к винде приколоченую, а в виде текстовое представление + его компиляция/декомпиляция в IStorage.

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

Бинарный исходный код?

и исходники в IStorage, и бинарники в своём формате (.ocf), который родной линкер умеет грузить, но не системный.

вот например есть публикация про линкер: тут

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

исходник это объект компонент в КОП. бинарник модуля — тоже объект, с метаинформацией модуля, о типах.

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

Project Oberon — нужен Project BlackBox как Literate Programming исходник

вот тут, например есть откомментированный Дональдом Кнутом исходник текстовой игры из конца 70х-начала 80х, ADVENTURE. попутно переведённый на нормальный язык программирования.

в итоге среда WEB Дональда Кнута из «грамотной» модели генерирует вот это вот всё, с гиперссылками, глоссарием, содержанием.

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

можно тупо построчно переводить на *ваш любимый ЯП*.

код становится «живым», понятным — теперь его проще сопровождать, рефакторить из такой вот LitProg метамодели.

Project Oberon представлен в виде простой книжки, не «грамотной».

BlackBox же есть артефакт из середины 90х: часть модулей в Kernel (см. описание в DevLinker, как собирается сама «система» по умолчанию, с какими именно модулями) завязан на платформноспецифичные Win32 (и MacOS 9 Classic) модули.

модули сильно завязаны на реализацию, недостаточно на интерфейсы в духе КОП.

если теперь взять и откомментировать в духе LitProg исходника ADVENTURE, то можно потом получить более понимаемую структуру модулей.

затем взять и написать компилятор Oberon-2 на Ocaml, например, через LLVM. и использовать линкер из LLVM — сразу под 32 бита, под 64, под Win/Lin/Mac.

и/или, использовать linker scripts для линкера в духе binutils, а не изобретать свой .ocf.

сейчас DevLinker с magic numbers для PE .exe и похожее же в DevLinkerElf — это страх и ужас. изобретение велосипедов.

а модули в LitProg понятной модели просто заменить на новую реализацию.

и всё будет работать, только более кроссплатформно и более понятно.

LitProg исходник в духе ADVENTURE.pdf будет жить вечно — он понимаем и легко переписываем на любой другой ЯП. портируется элементарно.

это модель архитектуры программы, метамодель системы (в стиле метасистемного перехода В. Ф. Турчина и метамашины Турчина).

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

хотя бы и вручную, при портировании.

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

кстати, чё там в линаксах с универсальной компонентной моделью документов?

GNOME накрылся (Network Object Model Environment), KPart прибит гвоздями к C++, XML DOM приколочен гвоздями к XML, HTML DOM — к браузеру, ODF вообще поганый .xml.zip (хорошо хоть не уродство под названием .docx), OpenDoc из MacOS нетути.

и что же вместо него?

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

Case insensitive

А это минус...

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

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

Но нужность сабжа не отрицаю,

Ну а чем он лучше существующего free pascal? Компиляцию в .NET трудно назвать преимуществом, платформ поддерживает меньше (Mono идёт на всяких BSD например?), IDE бесполезно, поскольку не кроссплатформенно. Разве что задачник, но он тоже проприетарный и кажется только под винду.

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

Выше шла речь о (не)нужности Паскаля вообще, а это как-никак диалект, хоть и с недостатками.

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

Но раз уж сам Вирт придумал что-то, что считает лучше, зачем продолжать насиловать труп паскаля? Можно было бы хотя бы синтаксис взять из более новых языков — отказаться от begin как в lua, так как всякие for или while уже подразумевают его сразу после условия и вообще упростить синтаксис.

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

отказаться от begin... упростить синтаксис.

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

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

Паскаль нужен как и всякое legacy типа фортрана, чтобы запускать тонны уже существующего софта

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

annulen ★★★★★
()
Ответ на: комментарий от SystemD-hater

Питухон лучше.

Чем лучше?
Могу сказать чем хуже — не обязательно объявлять переменные перед использованием и тип переменных не фиксирован.
Слишком много фич из разных парадигм программирования.
Ну и пробелы как часть синтаксиса — сомнительно, хотя наверное терпимо.

Xenius ★★★★★
()

Анонимус признает, Pascal лучший язык для школьников и студентов младших курсов

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

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

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

kto_tama ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.