Здравствуйте, netch80, Вы писали:
N>Ну так мне и до сих пор непонятно, какой диверсант распространил раннюю кривую версию разработки (под именем "Pascal")
Вирт, вестимо.
Его язык "Паскаль" — это один в один Алгол, над которым он работал в кач-ве соавтора.
Вирт исключил оператор goto из Алгола и еще всякой специфики по мелочи, с целью создать более "чистый" язык для обучения программированию.
А так-то это один и тот же язык, считай.
N>вместо более современных — хотя бы семейства Modula.
Дык, он же, Вирт, разработал Модулу-2 на ~20 лет позже.
Чуть более выразительный и чуть более строгий синтаксис.
В отличие от Паскаля, этот язык позиционировался для профессиональной разработки, а не обучения.
Классический пример.
Модула-2:
CASE i OF
2: StatementListl
3..5: StatementList2
2*3: StatementList3
ELSE StatementList4
END
Паскаль:
IF (i>0) AND (i<5) THEN
BEGIN
CASE i OF
2: BEGIN StatementListl END ;
3: BEGIN StatementList2 END ;
4: BEGIN StatementList2 END ;
5: BEGIN StatementList2 END ;
6: BEGIN StatementList3 END
END (* case *)
END
ELSE
BEGIN
StatementList4
END (* if *)
N>Но только с опытом разработки чего-то большого и поиска багов начинаешь понимать, чем подходы Pascal-с-компанией лучше переносимого ассемблера C.
Чистый Си — он как переносимый ассемблер, верно.
Но плюсы, при том что бесят во многих мелочах, дали, в сравнении с Паскалем, банальную выразительность и заметную экономию времени.
Я где-то в 92-94-м плотно использовал в параллель плюсы и Паскаль (до этого в параллель чистый Си и Паскаль), потом только плюсы и VB/VBA (потому что через COM было удобно сопрягать, бо в плюсах пишешь что-то неординарное, что на VB задолбаешься программировать, а в качестве скрипта-клея и для GUI-формочек использовать VB было самое то).
В 96-97 г опять слегка поюзал Паскаль в его объектной версии в Дельфи, бо формочки легко сопрягались с кодом, собранным Борланд С++, но как только вышел первый приличный MS Visual C++ 5-й версии — ну это было уже всё. ))
Наконец-то под Windows появился более-менее терпимый компилятор плюсов и можно было вздохнуть свободно, как грится, а не выкручиваться каждый божий раз, сопрягая ужа с ежом.
Хотя 5-й С++ и лажал еще в частичной специализации шаблонов, но тогда вообще в природе не существовало идеального С++-компилятора, а тот же gcc отставал безбожно в 90-е, это почему GNU/Linux
настолько поздно стали задействовать С++ — из-за отсутствия под руками нормального компилятора.
И почему кросс-разработка для меня в те годы была болью — из-за разночтений компиляторами кода и вообще не всегда пересекающимися подмножествами поддерживаемых конструкций.
MSVC 6.0 затем стал уже просто классикой, окончательно убив примерно пяток конкурентов под виндами, тот же Watcom.
На 6.0 писали много и долго, потому что MSVC 7.0 был глючным, дык, мы подменяли в среде Visual Studio компилятор (оно ж настраивается), они исправили глюки позже в MSVC 7.1.
В общем, по сравнению с нынешней офигенно высокой совместимостью кода для разных компиляторов С++, тогда это было сродни бегу по горячим углям.
И всё-равно, несмотря на все трудности (в сравнении с уютными Дельфи или VB/VBA), плюсы давали прочто чудовищный профит в экономии времени и вообще отдачи от вложенных усилий. Да и, многие задачи всё-равно только на них можно было решить.
Поэтому, проблема не в плюсах конечно, ругать плюсы за их недостатки более чем бесполезно.
Проблема обитает в альтернативах, которых приличных тупо нет.
Вон Rust пытается, но на сегодня даже еще не определились — так будет у них модель исключений или нет, ни за что и никогда? ))
Язык D был неплохой альтернативой, но они там налажали с миксинами и слишком убежали от совместимости в сниппетах с С++.
Всего-то требовалось слегка почистить С++, убрать опасные конструкции из "первой линии доступа", сразу же сделать подмножество SafeD.
Но ребята малость увлеклись и просрали полимеры, увы...
V>>Я рассмотрел модернизированный Фортран стандартов 2008 и 2018 — официально эти стандарты так и не вышли.
N>Ну всё-таки основа очень устаревшая. Из-за этого куча проблем начиная с синтаксиса.
О, нет.
Именно почистили синтаксис, сделали его выразительным.
Многословность синтаксиса там начинается, когда ты передаёшь в кач-ве аргумента, допустим, in-ссылку на массив указателей-указателей (раньше такого вообще было нельзя) и пишешь результат в out-ссылку на другой такой же массив.
Но! При всей многословности таких описаний, у них зато не может быть трудности разночтений, типа как в плюсах — спроси новичка что означают эти кракозябры:
template<size_t N>
int f(some_t ** const (&arg)[N]) {}
В Фортране каждый аргумент подробно описывается.