LINUX.ORG.RU
ФорумTalks

Что есть в паскале, чего нет в современных C++ ?

 , , ,


0

3

Сабж. Существуют ли в Free Pascal и Delphi конструкции, которые нельзя заменить простыми макросами, чтобы программа компилировалась GCC и работала? Помимо read/readln, write/writeln и аналогичных функций для работы со стрингами.

Интересуюсь просто так, поэтому не в Development.

Пока вспомнили:
with, котрый deprecated, но пока нормально компилируется и работает.
Модули.
case. Простейшие вещи из виртовского паскаля работают и в switch, но новые фичи вроде стрингов сделать не так просто.
Длина строки в нулевом байте.
Некоторые операции над строками.

Отдельного упоминания заслуживает Hedgewars, где для контроля качества конвертируют код из FP в C++ и применяют Coverity. Ещё не смотрел.

★★★★★

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

Что есть в паскале, чего нет в современных C++ ?

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

Размера получаемого исполнительного файла весом в пару КБ (актуально для Windows).

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

Вот этого всего нет в C++.

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

real

Сурове deprecated.

extended

Аналогично. В 64 битном режиме по понятным причинам равен Double.

atrus ★★★★★
()

Существуют ли в Free Pascal и Delphi конструкции, которые нельзя заменить

Очевидно не существуют, т.к. все тьюринг-полные языки эквивалентны с точки зрения реализуемости алгоритмов.

чтобы программа компилировалась GCC и работала

Если тебе нужно сконвертировать программу из паскаля в си, то это другой вопрос. Есть несколько конвертеров разной степени тухлости: p2c, PtoC и т.п. шлак, ибо ненужно.

no-such-file ★★★★★
()
Ответ на: комментарий от quwy

Оператор with сейчас, где-то видел, объявлен нежелательным в delphi, рекомендуют использовать полные имена, чтобы избегать ситуаций, когда они пересекаются во вложенных конструкциях.

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

Безопасный компилятор, с проверками памяти.

Но системщики сидящие на С взбунтуют, они привыкли к вольностям и швабоде делать ошибки с переполнением буфера и прочие.

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

C++ - упоротое говно
Ладно Go, который имеет плюсы паскаля и Си
Ладно раст, который прикольный и интересный
Но вот C++ - это Си, из которого выпилили Си и разбавили говно
C++ - говно, которое нужно выбросить

mystery ★★
()

А вообще, неплохо так вбросил :-)

Twissel ★★★★★
()

Что есть в C++, чего нет в паскале?

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

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

Нигде
Но это не означает, что Си плюс плюс говно

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

Я на делфях пописываю до сих пор, но что-то не слышал о таком. Тем более что использовать его для сокращения имен уже давно моветон, т.к. затрудняет поиск по исходнику и ломает инспектор в отладчике.

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

quwy
()

Души.

Сабж.

x0r ★★★★★
()

Строк с длиной в нулевом байте. То есть в C++ это можно сделать, но в std, кажется, обычно реализация с null-terminated.

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

в std, кажется, обычно реализация с null-terminated.

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

DarkEld3r ★★★★★
()

Да, например, в паскале требуется заранее объявлять все переменные, которые будешь использовать. Это приучает к правильному принципу: сначала думать, потом программировать.

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

Там срач с 2010 года не совсем угас.

Пф! With объявили deprecated с решением «когда-нибудь выпилим». Только когда это когда-нибудь наступит - х.з. Там до сих пор object выпилить не могут. :)

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

Что-то я не понял, что именно ты хочешь и зачем.

Оценить трудоёмкость применения статических анализаторов кода C++ к программе на Дельфи :)

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

Быстрые компиляторы.

Это относится не к особенностям синтаксиса, а к достоинствам :)

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

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

Размера получаемого исполнительного файла весом в пару КБ (актуально для Windows).

Ну да, но я спрашивал чисто про язык, а не про реализации и целевую аудиторию. Или однопроходность компилятора так много значит?

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

Оператор with.

Спасибо.

Да и вообще синтаксис, не похожий на машинные инструкции.

Что именно? По-моему все те же присваивания и условные переходы. Во Free Pascal даже := возвращает значение.

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

А с типами real и extended не будет проблем?

real в зависимости от версии может иметь различный размер. Проблемы будут даже в Дельфи :)

extended можно было использовать и в GCC. Проблемы будут даже в программах на C++ :)

question4 ★★★★★
() автор топика
Ответ на: комментарий от no-such-file

Есть несколько конвертеров разной степени тухлости: p2c, PtoC и т.п.

Спасибо, а можно ссылки? А то названия слишком распространённые, Гугл выдаёт всякое типа «клуб ориентирования „рысь поссума“».

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

Компонентного паскаля нет.

Можно поподробнее?

И вопрос не о достоинствах C++ перед паскалем. В паскале много чего нет: тернарных операций, макросов...

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

Строк с длиной в нулевом байте. То есть в C++ это можно сделать, но в std, кажется, обычно реализация с null-terminated.

И всякий доступ к нулевому байту строки нужно обрабатывать при конверсии. Спасибо.

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

В паскале есть полноценные модули? Их только в Модулу завезли, а та у быдлокодеров популярной не стала.

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

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

Кстати, сложение strings и прочие операции с ними сымитировать средствами std можно?

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

Да, например, в паскале требуется заранее объявлять все переменные, которые будешь использовать. Это приучает к правильному принципу: сначала думать, потом программировать.

А в C/C++ разве не так?

Кроме того, сейчас и там, и там объявлять можно не только в начале функций, но и глубоко в недрах программ. Или я ошибаюсь?

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

http://hdru.com/index.htm

Спасибо.

В США тип был бы конкурентом гугл.

Яндексу страна проживания не особо мешает :)

И какой был смысл писать на паскале, а компилировать на си? Неужели быстрее работает?

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

Кстати, сложение strings и прочие операции с ними сымитировать средствами std можно?

С паскалём слишком давно дело имел, но если подразумевается что-то типа такого:

string s1 = "hello";
string s2 + "world";
string s3 = s1 + " " + s2;
То это вполне корректный код на плюсах.

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

Там были какие-то сложности, что с плюсовым string не работает какое-то тривиальное действие. Сходу не нашёл.

Их можно передавать как константные параметры в функции?

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