Pull to refresh
-3
0
Send message
возможность объявлять переменную там, где она нужна и тогда, когда она нужна в PASCAL-подобных языках

Пожалуйста:
В Modula-3 ( ...).Однако, локальная область определения переменной цикла в данном случае вполне соответствует «духу» языка (поскольку возможны прочие локальные области в виде вложенных блоков «VAR… BEGIN… END» для поддержки «горячего определения переменных в коде», в т.ч. с возможностью вывода типа, но оставаясь в рамках «структуризации по-Паскалевски»).


Практика использования вышеупомянутого в Modula-3:

caltech-parser\cit_util\src\SIsuffix.m3
  FOR i := FIRST(List) TO LAST(List) DO
    VAR
      x : BOOLEAN;
    BEGIN
      x := tbl.put(List[i].char, List[i]);
      <* ASSERT NOT x *>
    END
  END


m3-libs\bitvector\test\src\TestBitVector.m3
    FOR i := 0 TO Max - 1 BY 7 DO
      FOR j := 1 TO 6 DO
        VAR set := bv2.set(i+j); BEGIN <* ASSERT NOT set *> END
      END
    END;


Аналогично — в ADA
В реально массовом софте


Решим задачу в стиле отдела кадров Google:
на первом месте 4 миллиарда Android OS, поделим на 3, пусть на 5 или 16, получим примерно долю Windows с включённым Hyper-V ( см. "device guard"). И не забудем прибавить мощности Azure.


Т.о. пример верифицированного массового ПО найден.


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


Не затруднит чуть подробнее? URL или менее общую терминологию ( для поиска ) ?


после верификации программисты добавят массу ошибок реализации


При генерации из создаваемых программистом в RAD среде Clarion "связке" .app + .dct файлов исходного кода ничто не мешает генерировать и пред- и постусловия, инварианты циклов и т.п.


( Т.е. большой объём кода, если он более менее типичный — не препятствие )


Вы, видимо, просто не видели эти формочки в социальных сетях


Скажем так: если и видел, то не оценил в чём их сложность: в количестве полей? в нестандартных элементах?


( Если последнее, то у C. есть и конкуренты: например, французская разработка. )


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

Есть "пример успеха": Hyper-V был формально верифирован для Microsoft.


Как это вписывается в вашу "картину мира"?


( А "сотни формочек" генерировались в Clarion из схемы БД ( .dct ) ещё в 90х.


И если сейчас это стало трудоёмкой задачей, то где прогресс средств разработки? )

(
как будто ВСЁ ЕЩЁ 80ЫЕ?

Что-то мне показалось неуловимо знакомым...
На заре советской эпохи (1918-1921)

20 нояб. 2014 г. — … и терпеть, но Завтра мы построим Новый Мир, справедливый и честный, а Старый Мир — уничтожим и отринем его прах с наших ног".
)
Предыстрия ( с др.сайта):
За капс в коде меня сразу уволят — на полном серьезе и без шуток. Это пишу для тех, кто не работает в частных компаниях (работающих в основном на мейнстримовых языках) — те кто работает, и так знают, как к этому отнесутся коллеги, вынужденные читать Ваш код. Большой баг на продакшене простят — все ошибаются. Но за капс кранты сразу. Даже в тех компаниях, где не принят официальный гайд про стиль кода, это подразумевается. Т.е. даже если кто-то в крупных фирмах захочет использовать КП или Оберон — его за один капс выкинут — даже слушать вряд ли будут. Ну и месяц как минимум коллеги поприкалываются. В таких компаниях на многих языках пишут — но капс сразу будет всех выбешивать.


Q:
Например, сравните вот это:

for key, value in somedict.items():
    if key.lower() in good_keys:
       return value


… с…. Исключительно с позиции читаемости.


A:
FOR Key, Value IN SomeDict.Items()
  IF Key.Lower() IN Good_keys
     RETURN Value
  .
.


( на всякий: это достаточно условный язык)

И теперь встречный вопрос:
Всё же, хотелось бы услышать, что будет происходить в фирме,
чьи работники привыкли существовать в «режиме без капса»,
которой «досталась» кодовая база проекта на языке с ALLCAPS-ом ключевых слов?

Пусть это будет Clarion: реалистичный бизнес сценарий и интересный технологический момент с .app/.dct
Насчет Паскаля — перейдя с него на Си я очень порадовался, что вместо begin/end появились брекеты
А переходя с Clarion (1986)-- огорчились бы:
If x = 5
  y = z * 3
.


В Modula-2 (1979), ADA ( стандарт и первый сертифицированный компилятор — 1983) и Oberon «детская болезнь» Алгола-60 решена на уровне синтаксиса языка.

В экосистеме Си — внесли в Misra C указание для носителей «естественного интеллекта».
… простой оторваный цикл они ( сборщики мусора) соберут. А вот как бы удаленный объект, забывший отписаться от событий — уже нет...
GC прав: «объект, который забыли отписать от событий» — его удалять просто небезопасно…
О) компилятор Оберона … Там (такое) творится
Если мы возьмём Active Oberon ( см. «доклад про Оберон технологии» ) «за основу», то всё будет выглядеть, как правило, «диаметрально противоположно». Другие языки семейства — не менее полезны и «результативны».

A) Т.к. несколько причастен к «постам и вопросам», приведу сокращённый ответ ( хотя бы, как повод к поиску первоисточника):

Язык Ада безусловно обсуждался в рамках данной дискуссии и в рамках обсуждения языка Оберон.… на вопрос об Ада…


Дмитрий Дагаев, «отвечая на посты и вопросы»:

1. В части функциональной безопасности (...)
(...) есть компилятор Ады GNAT, но только один ( остальные … ): GNU Ada New York Translator.
Поэтому использовать его даже для категорий B и C мы не можем. Росатом (...) покупает по конкурсу у трех независимых поставщиков. А тут один (...)
Более того, даже для категорий B и С продукт должен создаваться в рамках аналогичного жизненного цикла со всеми нашими требованиями к документированию, верификации, валидации и пр.
(...)
2. В части категории A, Ада не соответствует требованиям по причине избыточности.
( И с чего бы советские люди это всё не любили? См. далее )
Это было сильно связано с политической обстановкой того времени.
С какой конкретно политической обстановкой?
C той самой, при которой один из отцов-основателей кибернетики решал проблемы точности наведения ракет. Говорил: «Не можете попасть в город? Поставьте боеголовку способную выжечь 15км».
За гонимыми «генетикой» и... был другой смысл, который мы привыкли сейчас в них вкладывать.
Какой смысл?
«Генетику» обожали использовать в своих целях печально известные радикальные политики 1933-1945Q1.
( н-да, ReactOs никого не оставляет равнодушным...)
В среде TP работал с 1991, года три. Но, как видите, не забыл.
Вы — да. Ваши одноклассники?
Однокурсники Ж-) В школах был, обычно, Basic на БK-0010

Использовали курс информатики в рамках курса информатики
Код специальности 22.04, как бы, подразумевает…
обучаются тому, что благополучно забудут после школы как ночной кошмар (в том числе как зайти в дебаг
Не извольте волноваться — не забудут
Забудут.
Исключительно в качестве контрпримера:
В среде TP работал с 1991, года три. Но, как видите, не забыл.

Насколько помню, в Turbo/Free Pascal вполне себе доступно ООП. Но его не используют во время обучения.
Да, появилось в TP, примерно, к этому же году.
ООП было темой 1 ( или 2-ой) курсовой работы.
( Т.е. минимум один раз «использовали в учебном процессе»? Не так ли?)

Microsoft... мы берем и лишаем её конкуренции
Конкурент MS — ReactOS ( «free Windows»). Допустим, что «на сегодня» — потенциальный.

Но вернёмся к средствам разработки:
имеет... кроссплатформенную реализацию, в отличие от Delphi-FPC
Отличие в списке платформ?
Да.
Скорее, «нет»:
image

Если мал список собственно Pascal, то возьмём ещё и списки наследников ( Modula-3, ADA и т.д.)
Тут ведь как в анекдоте: «посмотрите на это с другой стороны»
Получается, что Linux вызывает в 18 раз больше вопросов чем Windows.
А *BSD вообще не видно на графике. К iOS и Android падение интереса?

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

А по доле продукции MS — всё ещё проще: у MS есть свой форум(?) взаимопомощи.
«Все там» и это ещё если не учитываем support от MS ( его услуги входят в цену продуктов от Microsoft ).
Может сложиться впечатление, что Unix наследник Linux ;-)
А ведь всё строго наоборот. MacOS — кузен Linux, наверное.

Так что, юниксообразие и у многочисленных дистрибутивов Линукса — наблюдается.
( смайлики — везде где читатель может начать переживать Ж-)
В том, что должна сообщить читателю цифра 0.5/100 ;-)
картинка со Стековерфлоу, на которой...

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

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

MacOS, в принципе, «основана далеко не на Linux»:

«Darwin — система с гибридным ядром XNU, созданном на основе микроядра Mach и стандартными сервисами BSD (от NetBSD, кстати)[4]. Кода BSD и Mach там поровну[5].»

«Apple MacOS X — новая ОСь развитая из NeXTstep + MacOS, работающая на ядре Darwin (система с гибридным ядром XNU: созданном на основе микроядра Mach и сервисами FreeBSD)
Существует с десяток авто-переводчиков, большей частью справляются автоматом.
Можно примеры?

SWIG (Simplified Wrapper and Interface Generator).
Начиная с v1.3.22 — Modula-3, с UPDATE 2017:
Modified by FMXExpress ( see on GitHub ) version of
SWIG 3.0.11 for Delphi and Object Pascal
Под статьёй о Delphi, в котором операторные скобки занимают от трёх до пяти символов каждая
Это весьма известная история ( и ей тут самое место):
За выживший в «эволюционной борьбе» begin можете сказать спасибо вполне конкретному ( с какого-то момента) бизнесмену. Почти дословно: «И зачем нам Borland Modula-2, когда и то что есть продаётся?»
В Modula-2, ADA и Oberon «пятибуквенных скобок» меньше.

Кстати, в Clarion со «скобочками» ( и, заодно, с "=") ещё более лаконично:
If x = 5
  y = z * 3
.
Clarion тот еще подарок был. И мышкой там щёлкалось ровно до тех пор, пока не полез руками в код.
Верно только для CPD 2.X/1.X, уже с CDD 3.X решено templates
Исходно речь шла о ненужности археологических знаний в айтишных дисциплинах, цель которых — дать какие-то практические навыки.

Вопрос спорный см. например «Алексей Недоря о программировании и не только»:

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

Сразу несколько уточняющих вопросов:
•Является ли это обычным? Мне кажется, что нет. Мне кажется, что большинство программистов программирует на каком-то одном языке (нескольких языках). Для меня это странно, что-то вроде привязывания палок к ногам, чтобы колени не гнулись. Ведь «… ишпанским языком с богом, французским с друзьями, немецким с неприятелями, итальянским с женским полом…».
•А на чем я программирую? У меня есть точный и бесполезный ответ: «на лексиконе программирования». Помните, анекдот про заблудившийся вертолет, который подлетает к небоскребу с плакатом: «Где мы?» В ответ, после некоторой суеты, в окно небоскреба выставляют ответный плакат: «Вы в вертолете!» Вот это такой же точный и бесполезный ответ, как и про «лексикон программирования». Если же попробовать все же ответить, то ответ будет примерно таким: я изначально думаю и делаю разработку в достаточно общих понятиях, которые потом транслирую на конкретный язык программирования и конкретные библиотеки/компоненты/фреймворки…


•Почему я так программирую? Вот тут ответ у меня вполне обоснованный: я компиляторщик, с опытом разработки компиляторов с разных языков и на разные платформы. Я умею видеть суть за туманом и синтаксическим сахаром. Я понимаю, откуда растут ноги у решений, принятых разработчиками языков. Плюс к этому, я изучал историю компьютеров и языков программирование.

Какие же интересные выводы мы можем сделать из этих вопросов/ответов:
•Не буду акцентировать внимание на очевидной для меня и думаю, что не столь очевидной для многих мысль, что обучение IT должно включать в себя историю программирования и, обязательно, несколько принципиально разных языков программирования, например, вот такую троицу: Smalltalk, Forth, Oberon и плюс к ним Scratch. А уж потом те языки, что сейчас в моде. Я не настаиваю именно на этих языках, это всего лишь мои личные предпочтения и выражение уважение к их авторам/разработчикам.

P.S. планировал было ограничиться последним абзацем, но решил: без контекста он воспринимается несколько «по другому»
Было начал переживать за IDE, скачал, установил и т.д.
как зайти в дебаг
Собственно, не надо никуда заходить:

image

всё как и было принято в Turbo Pascal

обучаются тому, что благополучно забудут

Не извольте волноваться — не забудут

P.S.
кроссплатформенную реализацию, в отличие от Delphi-FPC
Отличие в списке платформ?

Information

Rating
Does not participate
Registered
Activity