The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Опубликован четвёртый том общедоступной книги 'Программирова..., opennews (??), 28-Мрт-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


175. "Опубликован четвёртый том общедоступной книги Программирован..."  –1 +/
Сообщение от Ordu (ok), 28-Мрт-20, 23:11 
>>> Рассмотрены концептуальные различия между Паскалем и Си.
>> Лолшто? Какие там концептуальные различия?
> Строки.

Нну, это хрен знает... Строки -- это мелкий и не очень существенный нюанс, причём даже не совсем нюанс языка, это можно рассматривать как особенность стандартной библиотеки. Хотя в паскале строки запилены на уровне языка со сборкой мусора.

С другой стороны, это и есть пример единственного концептуального отличия паскаля от C: в C есть базовые простые блоки, предназначенные для многократного использования во многих разных ситуациях, для того, чтобы на основе этих блоков строить всё остальное, в том числе и строки, и, например, printf. В pascal'е же, если что-то не строится хорошо на базовых простых блоках, в язык засовывается новый ad hoc блок, и получаются строки со сборкой мусора, и writeln, который вроде как макрос, но макросов в языке нет. И, соответственно, если мне чутка не нравится writeln, и я хочу свой, то я не напишу этот свой никак, разве что патчить компилятор или писать препроцессор к нему. В C же, если мне не хватает в printf спецификаторов для вывода массивов, то я могу запилить их туда, написав printf заново.

Когда Ритчи подумал, что надо как-то сделать удобный вывод в консоль, он запилил в язык эллипсис, и дал возможность написать printf. Когда Вирт подумал, что надо как-то сделать удобный вывод в консоль, он отказался от эллипсиса потому как это плохо, он отказался от макросов, потому как это ещё хуже, и вместо этого он запилил ad hoc костыль -- writeln.

> А так-то и бейсик с си -- императивные языки программирования.

С бейсиком сложно сравнивать, потому что бейсиков много. Если тот бейсик с номерами строк, который на БК-0011, то простите он до уровня C не дотягивает вообще никак. Он больше на ассемблер похож. Если же что-то типа Visual Basic, то там уже во все поля ООП и это опять же другой язык. Был ещё Turbo Basic, его может и можно поставить в один ряд с С -- но я не видел его ни разу.

C++ тоже императивный язык программирования, но они очень разные с C.

Ответить | Правка | Наверх | Cообщить модератору

253. "Опубликован четвёртый том общедоступной книги Программирован..."  +/
Сообщение от Аноним (253), 29-Мрт-20, 18:54 
Разница между СиСКлассами и Pascal (именно дане не у С++ и Delphi) - на самом деле огромна.
Собираю такие вещи больше по крупицам, так что знаю это, просто такие мелочи у людей забываются.
Например прямая конверсия - и близко невозможна несмотря на схожесть поверхностно.

И writeln -  наверное самый паршивый тут пример, если не сказать вообще высосанный из пальца.
Лично мне самая критичная разность тяжело портабельная - вызов конструкторов предков в конструкторе т.к.в Pascal они более универсально вызываются - в любом месте конструктора, ну и ещё встроенные асемблеры, не говорю уже про inline у TP.

Ответить | Правка | Наверх | Cообщить модератору

291. "Опубликован четвёртый том общедоступной книги Программирован..."  +/
Сообщение от Ordu (ok), 29-Мрт-20, 23:04 
> Например прямая конверсия - и близко невозможна несмотря на схожесть поверхностно.

Что такое прямая конверсия? Приведение типов? В смысле enum к int? Да, это в паскале раздражало, всегда описывать эти преобразования, и макроязыка нет, чтобы задавать их автоматически. Но это на самом деле нюансы, к ним приспосабливаешься, и пишешь ровно одно и то же, вне зависимости от языка.

Вот когда ты начинаешь вместо void* использовать подстановку типов или наследование, или там чайнить методы вместо того чтобы писать f(g(h(...))), или жонглировать замыканиями, вместо того чтобы на каждый чих плодить классы и их инстансы, или запиливать макросы, создавая язык заточенный на задачу, вместо того, чтобы создавать выверенную иерархию классов -- вот это уже указывает на заметную разницу между языками.

> И writeln -  наверное самый паршивый тут пример, если не сказать
> вообще высосанный из пальца.

Не. Мне как-то захотелось в паскале райтэлэны заменить на что-то типа, но для дебага и вывод я хотел отправлять куда-то в очень интересное место, не помню куда. И я испытал кучу баттхёрта, потому что нельзя так сделать.

> Лично мне самая критичная разность тяжело портабельная - вызов конструкторов предков в
> конструкторе т.к.в Pascal они более универсально вызываются - в любом месте
> конструктора, ну и ещё встроенные асемблеры, не говорю уже про inline
> у TP.

Хз, я на ООП в стиле 90-х забил в самом начале нулевых, решив даунгрейдится до C. Даже забавно слышать о таких проблемах сегодня. Я успел забыть о том, что они существуют. Но может быть это одно из концептуальных различий "C с классами" и Pascal. Сложно сказать.

Ответить | Правка | Наверх | Cообщить модератору

309. "Опубликован четвёртый том общедоступной книги Программирован..."  +/
Сообщение от Аноним (309), 30-Мрт-20, 13:59 
> Что такое прямая конверсия?

Ну это видимо имеется в виду взять и написать "программу-конвертер" исходного текста на одном языке в исходный текст на другом. Туда и обратно.

Ответить | Правка | Наверх | Cообщить модератору

311. "Опубликован четвёртый том общедоступной книги Программирован..."  +/
Сообщение от Ordu (ok), 30-Мрт-20, 14:26 
>> Что такое прямая конверсия?
> Ну это видимо имеется в виду взять и написать "программу-конвертер" исходного текста
> на одном языке в исходный текст на другом. Туда и обратно.

Ну хз... Я когда только влез в линукс, нашёл игрушку своих студенческих лет -- морию, но не совсем её, а форк -- icmoria, который был получен при помощи компилятора p2c. Я изучал сорцы, комментарии в них и сопутствующие файлы, из чего я понял, что результат p2c правился руками, для того, чтобы заработало но... эмм... эти правки все были механическими. В смысле алгоритмически они наверное очень сложные правки, или может даже эти преобразования вообще алгоритмически невозможно проделать, иначе бы их в p2c реализовали, но для человеческой психики такого рода работа -- это механическая работа, которая не требует ни грамма мысли, лишь усидчивость и внимание требуются.

Но это, я отмечу, не к сравнению "C с классами" и Object Pascal, которое аноним выше проводит, а к сравнению C и Pascal.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру