возможность объявлять переменную там, где она нужна и тогда, когда она нужна в 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;
Решим задачу в стиле отдела кадров Google:
на первом месте 4 миллиарда Android OS, поделим на 3, пусть на 5 или 16, получим примерно долю Windows с включённым Hyper-V ( см. "device guard"). И не забудем прибавить мощности Azure.
Т.о. пример верифицированного массового ПО найден.
В нормальных же инструментах код доказанной программы генерируется автоматически
Не затруднит чуть подробнее? URL или менее общую терминологию ( для поиска ) ?
после верификации программисты добавят массу ошибок реализации
При генерации из создаваемых программистом в RAD среде Clarion "связке" .app + .dct файлов исходного кода ничто не мешает генерировать и пред- и постусловия, инварианты циклов и т.п.
( Т.е. большой объём кода, если он более менее типичный — не препятствие )
Вы, видимо, просто не видели эти формочки в социальных сетях
Скажем так: если и видел, то не оценил в чём их сложность: в количестве полей? в нестандартных элементах?
( Если последнее, то у C. есть и конкуренты: например, французская разработка. )
Т.к. если в логике обработки, то инженерный подход, как раз, будет не лишним.
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 указание для носителей «естественного интеллекта».
Если мы возьмём Active Oberon ( см. «доклад про Оберон технологии» ) «за основу», то всё будет выглядеть, как правило, «диаметрально противоположно». Другие языки семейства — не менее полезны и «результативны».
A) Т.к. несколько причастен к «постам и вопросам», приведу сокращённый ответ ( хотя бы, как повод к поиску первоисточника):
Язык Ада безусловно обсуждался в рамках данной дискуссии и в рамках обсуждения языка Оберон.… на вопрос об Ада…
Дмитрий Дагаев, «отвечая на посты и вопросы»:
1. В части функциональной безопасности (...)
(...) есть компилятор Ады GNAT, но только один ( остальные … ): GNU Ada New York Translator.
Поэтому использовать его даже для категорий B и C мы не можем. Росатом (...) покупает по конкурсу у трех независимых поставщиков. А тут один (...)
Более того, даже для категорий B и С продукт должен создаваться в рамках аналогичного жизненного цикла со всеми нашими требованиями к документированию, верификации, валидации и пр.
(...)
2. В части категории A, Ада не соответствует требованиям по причине избыточности.
( И с чего бы советские люди это всё не любили? См. далее )
Это было сильно связано с политической обстановкой того времени.
С какой конкретно политической обстановкой?
C той самой, при которой один из отцов-основателей кибернетики решал проблемы точности наведения ракет. Говорил: «Не можете попасть в город? Поставьте боеголовку способную выжечь 15км».
За гонимыми «генетикой» и... был другой смысл, который мы привыкли сейчас в них вкладывать.
Какой смысл?
«Генетику» обожали использовать в своих целях печально известные радикальные политики 1933-1945Q1.
обучаются тому, что благополучно забудут после школы как ночной кошмар (в том числе как зайти в дебаг
Не извольте волноваться — не забудут
Забудут.
Исключительно в качестве контрпримера:
В среде TP работал с 1991, года три. Но, как видите, не забыл.
Насколько помню, в Turbo/Free Pascal вполне себе доступно ООП. Но его не используют во время обучения.
Да, появилось в TP, примерно, к этому же году.
ООП было темой 1 ( или 2-ой) курсовой работы.
( Т.е. минимум один раз «использовали в учебном процессе»? Не так ли?)
Microsoft... мы берем и лишаем её конкуренции
Конкурент MS — ReactOS ( «free Windows»). Допустим, что «на сегодня» — потенциальный.
Но вернёмся к средствам разработки:
имеет... кроссплатформенную реализацию, в отличие от Delphi-FPC
Отличие в списке платформ?
Да.
Скорее, «нет»:
Если мал список собственно Pascal, то возьмём ещё и списки наследников ( Modula-3, ADA и т.д.)
Тут ведь как в анекдоте: «посмотрите на это с другой стороны»
Получается, что Linux вызывает в 18 раз больше вопросов чем Windows.
А *BSD вообще не видно на графике. К iOS и Android падение интереса?
Ответ-то ведь очень прост, на самом деле: это график только по одному ( хотя и популярному ) сайту, а статистика, по хорошему, должна быть собрана по всем «вопрошающим» на сайтах и в учебниках, и во многом другом. Или проводить опросы среди граммотно выбранного репрезентативного среза респондентов.
А по доле продукции MS — всё ещё проще: у MS есть свой форум(?) взаимопомощи.
«Все там» и это ещё если не учитываем support от MS ( его услуги входят в цену продуктов от Microsoft ).
«Darwin — система с гибридным ядром XNU, созданном на основе микроядра Mach и стандартными сервисами BSD (от NetBSD, кстати)[4]. Кода BSD и Mach там поровну[5].»
«Apple MacOS X — новая ОСь развитая из NeXTstep + MacOS, работающая на ядре Darwin (система с гибридным ядром XNU: созданном на основе микроядра Mach и сервисами FreeBSD)
Под статьёй о Delphi, в котором операторные скобки занимают от трёх до пяти символов каждая
Это весьма известная история ( и ей тут самое место):
За выживший в «эволюционной борьбе» begin можете сказать спасибо вполне конкретному ( с какого-то момента) бизнесмену. Почти дословно: «И зачем нам Borland Modula-2, когда и то что есть продаётся?»
В Modula-2, ADA и Oberon «пятибуквенных скобок» меньше.
Кстати, в Clarion со «скобочками» ( и, заодно, с "=") ещё более лаконично:
Исходно речь шла о ненужности археологических знаний в айтишных дисциплинах, цель которых — дать какие-то практические навыки.
Вопрос спорный см. например «Алексей Недоря о программировании и не только»:
Вернусь к основной мысли: я могу программировать на любом языке, потому что я программирую не на языке.
Сразу несколько уточняющих вопросов:
•Является ли это обычным? Мне кажется, что нет. Мне кажется, что большинство программистов программирует на каком-то одном языке (нескольких языках). Для меня это странно, что-то вроде привязывания палок к ногам, чтобы колени не гнулись. Ведь «… ишпанским языком с богом, французским с друзьями, немецким с неприятелями, итальянским с женским полом…».
•А на чем я программирую? У меня есть точный и бесполезный ответ: «на лексиконе программирования». Помните, анекдот про заблудившийся вертолет, который подлетает к небоскребу с плакатом: «Где мы?» В ответ, после некоторой суеты, в окно небоскреба выставляют ответный плакат: «Вы в вертолете!» Вот это такой же точный и бесполезный ответ, как и про «лексикон программирования». Если же попробовать все же ответить, то ответ будет примерно таким: я изначально думаю и делаю разработку в достаточно общих понятиях, которые потом транслирую на конкретный язык программирования и конкретные библиотеки/компоненты/фреймворки…
•Почему я так программирую? Вот тут ответ у меня вполне обоснованный: я компиляторщик, с опытом разработки компиляторов с разных языков и на разные платформы. Я умею видеть суть за туманом и синтаксическим сахаром. Я понимаю, откуда растут ноги у решений, принятых разработчиками языков. Плюс к этому, я изучал историю компьютеров и языков программирование.
Какие же интересные выводы мы можем сделать из этих вопросов/ответов:
•Не буду акцентировать внимание на очевидной для меня и думаю, что не столь очевидной для многих мысль, что обучение IT должно включать в себя историю программирования и, обязательно, несколько принципиально разных языков программирования, например, вот такую троицу: Smalltalk, Forth, Oberon и плюс к ним Scratch. А уж потом те языки, что сейчас в моде. Я не настаиваю именно на этих языках, это всего лишь мои личные предпочтения и выражение уважение к их авторам/разработчикам.
P.S. планировал было ограничиться последним абзацем, но решил: без контекста он воспринимается несколько «по другому»
P.S. В январе Вы критиковали один из Basic-ов:
Пожалуйста:
Практика использования вышеупомянутого в Modula-3:
caltech-parser\cit_util\src\SIsuffix.m3
m3-libs\bitvector\test\src\TestBitVector.m3
Аналогично — в 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х.
И если сейчас это стало трудоёмкой задачей, то где прогресс средств разработки? )
Что-то мне показалось неуловимо знакомым...
)
Предыстрия ( с др.сайта):
Q:
A:
( на всякий: это достаточно условный язык)
И теперь встречный вопрос:
В Modula-2 (1979), ADA ( стандарт и первый сертифицированный компилятор — 1983) и Oberon «детская болезнь» Алгола-60 решена на уровне синтаксиса языка.
В экосистеме Си — внесли в Misra C указание для носителей «естественного интеллекта».
A) Т.к. несколько причастен к «постам и вопросам», приведу сокращённый ответ ( хотя бы, как повод к поиску первоисточника):
Дмитрий Дагаев, «отвечая на посты и вопросы»:
C той самой, при которой один из отцов-основателей кибернетики решал проблемы точности наведения ракет. Говорил: «Не можете попасть в город? Поставьте боеголовку способную выжечь 15км».
«Генетику» обожали использовать в своих целях печально известные радикальные политики 1933-1945Q1.
Однокурсники Ж-) В школах был, обычно, Basic на БK-0010
Код специальности 22.04, как бы, подразумевает…
В среде TP работал с 1991, года три. Но, как видите, не забыл.
Да, появилось в TP, примерно, к этому же году.
ООП было темой 1 ( или 2-ой) курсовой работы.
( Т.е. минимум один раз «использовали в учебном процессе»? Не так ли?)
Конкурент MS — ReactOS ( «free Windows»). Допустим, что «на сегодня» — потенциальный.
Но вернёмся к средствам разработки:
Скорее, «нет»:
Если мал список собственно Pascal, то возьмём ещё и списки наследников ( Modula-3, ADA и т.д.)
Получается, что Linux вызывает в 18 раз больше вопросов чем Windows.
А *BSD вообще не видно на графике. К iOS и Android падение интереса?
Ответ-то ведь очень прост, на самом деле: это график только по одному ( хотя и популярному ) сайту, а статистика, по хорошему, должна быть собрана по всем «вопрошающим» на сайтах и в учебниках, и во многом другом. Или проводить опросы среди граммотно выбранного репрезентативного среза респондентов.
А по доле продукции MS — всё ещё проще: у MS есть свой форум(?) взаимопомощи.
«Все там» и это ещё если не учитываем support от MS ( его услуги входят в цену продуктов от Microsoft ).
А ведь всё строго наоборот. MacOS — кузен Linux, наверное.
Так что, юниксообразие и у многочисленных дистрибутивов Линукса — наблюдается.
( смайлики — везде где читатель может начать переживать Ж-)
Раз уж мы обсуждаем проблемы образования, вот ещё интереснейшая тематика:
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
В Modula-2, ADA и Oberon «пятибуквенных скобок» меньше.
Кстати, в Clarion со «скобочками» ( и, заодно, с "=") ещё более лаконично:
Вопрос спорный см. например «Алексей Недоря о программировании и не только»:
P.S. планировал было ограничиться последним абзацем, но решил: без контекста он воспринимается несколько «по другому»