forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Объясните разницу между Delphi и C++ (http://forum.boolean.name/showthread.php?t=14711)

Twice 10.06.2011 10:49

Ответ: Объясните разницу между Delphi и C++
 
Ну я сейчас примеры Java приводил, а C Sharp наверно да, не такой уж и плохой, только кроссплатформенность страдает.
Цитата:

офис 2003 работает у меня медленнее чем опенофис. а 2007 и 2010 тем более.
Не знаю, какое у тебя железо, но на относительно нормальном железе Microsoft Office работает намного стабильней и быстрее чем OpenOffice. И это не я один говорю:) Другое дело сравнивать их нельзя, т.к один бесплатный, а другой мягко говоря дорогой.

DjeeZ 14.06.2011 21:55

Ответ: Объясните разницу между Delphi и C++
 
Многие функции в Борландовской среде сделаны на ассемблере, отсюда довольно высокая скорость выполнения при быстрой разработке. И отсюда же - сильная зависимость от Windows.

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

Сейчас мне надо сделать в VS-e C++ что-то типа графического редактора, реализующего несколько своих эффектов для картинок. Помню как среде Борланда экспериментировал с битмапом, писал свои функции для рисования линий, квадратов и т.д. Получались очень шустрые по сравнению со стандартными функциями рисования Windows. Так-же помнится разговор о том, что в MSDN bitmap - это нечто другое. Посоветуйте, если есть такое, вариант - как реализовать в VСтудии нечто такое же шустрое, как у Борландов, но на халяву. Что бы вы использовали если бы делали шустрый Paint.net, например?

Извиняюсь, если вопрос не совсем в нужной теме или надо было писать в ключе:" А слабо с помощью Студии и C++ замутить подобное...?" ;)

Спасибо.

Mhyhr 15.06.2011 08:58

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

Многие функции в Борландовской среде сделаны на ассемблере
Сидим значит с сестрой, пишем в этом вашем борланде с++ проект дипломный, ну там база данных, формочки, бла бла бла.
Сделали ошибку, среда сослалась на какой-то хидр, менеджер форм или что-то типа того. Открываем, а там простите всё на дельфи. Внезапно.

DjeeZ 15.06.2011 15:11

Ответ: Объясните разницу между Delphi и C++
 
Ну, может быть стоило глубже копнуть. Не удивило - почему это, проект с хидерами на Делфи так быстро компилируется?
Цитата:

Сообщение от Mhyhr (Сообщение 191567)
пишем в этом вашем борланде

Почему же он мой? Я его несколько лет в глаза не видел.:)
А как насчет аналога Битмапа в VS-e c++?

NitE 15.06.2011 18:18

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

Многие функции в Борландовской среде сделаны на ассемблере
Цитата:

И отсюда же - сильная зависимость от Windows.
Можно подробнее ?

Есть уже много сред, в том числе и бесплатных, которые быстрее и проще делфи.

Чтобы сделать свой пейнт, можешь использовать опенгл. Будет так шустро, как напишешь. Сделать его можно в течений дня даже ничего не зная про это, пара статей/туториалов и ты готов к действию!

Twice 15.06.2011 20:26

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

Сообщение от NitE (Сообщение 191614)
Есть уже много сред, в том числе и бесплатных, которые быстрее и проще делфи.

Заинтриговал..

DjeeZ 16.06.2011 14:01

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

Сообщение от NitE (Сообщение 191614)
Цитата:

Многие функции в Борландовской среде сделаны на ассемблере
И отсюда же - сильная зависимость от Windows.
Можно подробнее ?

О чем подробнее? Разве большое количество ассемблера для Windows не привязывает приложение к самой Windows? Или есть сомнения в его большом количестве?
Не могу найти тех источников откуда я это почерпнул, где то на ж. диске вроде есть, но не могу найти - прям мистика какая-то.
:-)
Но зато могу привести свои тогдашние представления по данному вопросу.
Подробней, так подробней...;)

Во времена перехода турбо-паскаля на Win32 получился у тамошних программистов, поначалу, графический интерфейс уж больно тормозной.
А в то время у Борланда имелись незанятые специалисты не только по ассемблеру(это само собой), а вроде как гении машинного кода (типа того чувака из "Матрицы", что смотрел на цифры, а видел бабу в окружении городского ландшафта). Их и притянули реализовать быстрый GI для Делфи. Этим и подсели на иголку. Сделали вышеназванные спецы графический интерфейс быстровыводящийся. Понравилось начальству, те - и ну давай этих пускать к разработке vcl, да писать функции в узких и тормозных местах, да компилятор оптимизировать. А спецы и сделали оптимизацию компиляции - получился не то - компилятор, не то - ассемблер. Некая смесь. Сразу в машинный код для win32 генерил проги. (Шепотом... Поговаривали, даже, что в компиляторе Борландовском есть функция-дизассемблер, чтоб код на ассемблере получить всё-таки можно было!..)
А параметры получившиеся проги передавали через быстрые регистры, а не медленный стек, да еще и переменные умудрялись в регистрах при этом хранить по многу тактов. Тогда руководство во главе с самым главным Борландом не знали еще, что c++ гнет железо под себя - не смотри, что сам гибкий. В процессорах с тех пор оптимизировали работу со стеком, да и кэш вырос и быстрее стал. И выигрыша от передачи параметров через регистры для Делфи-компилятора не стало. На MMX, же и SSE - программеры старой закалки смотрели свысока, как на нечто новое, глупое и совсем не процессорное.

Слабо было налажено взаимодействие между программерами во время работы. И получилось как всегда - каждый решал разные возникшие по ходу вопросы по своему, а когда попытались все это соединить в одно целое - ничего не получалось - впору переделывать всё заново - ни в какую ни шло!.. И вот сидел и пробовал решить данную проблему один из древних спецов, сидел уже далеко за полночь - не то думал, не то спал уже. И вот, на самой границе со сном, когда терялась уже всякая связь мысли с реальностью, - снизошло на него "Великое Программерское Озарение"! И не помешала ему Инкапсуляция (он не знал про нее) окинуть всё широким взором. И поменял он по нескольку строк в разных местах программы, и поменял прямо в машинных кодах (по привычке) - и уснул... На утро программа работала как надо и никто не мог понять и вспомнить что в ней изменилось и почему вчера не работало, - а сегодня пашет, - исходников же на данном, самом низком уровне программирования - не было вовсе. Так и образовался "Пуп среды Дельфи" - непонятно точно где находящееся, блуждающее решение, соединившее несоединимое. И навсегда привязало, непостижимым образом, среду Дельфи к win32!
Хотя и есть мнение, что так истинные создатели ТАСМа отомстили за то, что не попали в титры, но скорее - не иначе как, сам знаменитый древнеэллинский Дельфийский Оракул посетил проект через программера и посмеялся над ними.

"Как ты яхту назовешь, так она и поплывёт" кэп.Врунгель.
Я то, точно знаю, что нельзя было, просто-напросто, называть эту свою работу - "Delfhy", да еще и использовать старинное латинское написание буквы "ф". Нельзя называть корабль Титаником или Посейдоном - из того же списка ошибок.
Ведь именно в Дельфи еще до храма Аполлона находился храм поклонения Земле (Гее), считавшийся Пупом Земли нашей.
Те кто считают, что это все смешные сказки - пусть оторвутся на секундочку от своего времени и взглянут на происходящее со стороны. И определят - что, на самом деле, смешнее и нелепее, - поклоняться Земле, породившей нас, или торговать ею, поделив на кусочки-наделы, никак не поучаствовав, при этом, в ее создании!?. Так что, - ширее надо глядеть на вещи.

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

Новые, же, свеженанятые специалисты имели совершенно другой образ мышления (для них Дельфи это - не греческая святыня, а другой город Делфи(Delphi) расположеный в США, Штат Индиана). И сколько не пытались те выкинуть ассемблерный код - всё время получался глюковатый тормозоид по сравнению с оригиналом. "Пуп среды Дельфи" никто отловить так и не смог - не по зубам такие вещи программерам с объектным мышлением.

den 16.06.2011 14:23

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

А в то время у Борланда имелись незанятые специалисты не только по ассемблеру(это само собой), а вроде как гении машинного кода (типа того чувака из "Матрицы", что смотрел на цифры, а видел бабу в окружении городского ландшафта).
асемблерные команды кагбэ напрямую переводятся в машиный код.
и наоборот
если чо

Taugeshtu 16.06.2011 15:00

Ответ: Объясните разницу между Delphi и C++
 
Так... Давай разбираться.

Цитата:

большое количество ассемблера для Windows
Ээээ? Меня всегда учили, что ассемблер зависит от архитектуры процессора, но никак не от оси.

Цитата:

специалисты не только по ассемблеру(это само собой), а вроде как гении машинного кода (типа того чувака из "Матрицы", что смотрел на цифры, а видел бабу в окружении городского ландшафта)
Асмы всех мастей - привычная человеку форма записи машинного кода.

Цитата:

Сразу в машинный код для win32 генерил проги. (Шепотом... Поговаривали, даже, что в компиляторе Борландовском есть функция-дизассемблер, чтоб код на ассемблере получить всё-таки можно было!..)
Эпический фейспалм. Есть 2 типа обработчиков исходников - компиляторы и трансляторы. Компиляторы перегоняют исходный код в машинный код. Трансляторы переводят код из языка А в язык Б, где уже компилятор В хавает код на языке Б и переводит в машинный (возможно несколько итераций).
Дизасм - процедура получения кода, записанного на асме, из бинарников - просто "перевод" ноликов и еденичек в короткие слова и цифры. Как правило, профита не даёт - много шаманства компиляторов, обфускаторов и просто шелухи дико затрудняют понимание кода. Если приложить изрядную степень упорства (и упоротости) - с помощью процедуры дизасма и последующего патчинга можно делать кряки.

Цитата:

Так и образовался "Пуп среды Дельфи" - непонятно точно где находящееся, блуждающее решение, соединившее несоединимое. И навсегда привязало, непостижимым образом, среду Дельфи к win32!
Ударь в бубен головой, шаман духов машины...

Хорошая сказочка, но вредная.

Randomize 16.06.2011 23:24

Ответ: Объясните разницу между Delphi и C++
 
Ну вобще DEDE.
http://www.xakep.ru/post/41931/default.asp
На выходе может выдать целый проект. Имена всех ф-ций и тд будут как у разработчика, а вот их содержимое будет именно ассемблере. Хотя стоит отметить что на ассемблере оно будет частично. Такие пироги. Декомпилятор есть и вполне удобный.

impersonalis 17.06.2011 00:05

Ответ: Объясните разницу между Delphi и C++
 
ДеДе рулит, да!

DjeeZ 17.06.2011 02:30

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

Сообщение от Taugeshtu (Сообщение 191770)
Так... Давай разбираться.

Вот так и рухули мои планы соорудить учебник по программированию основываясь на своей байке.:-D
Это всё серьёзно? Этот разбор полетов?

И в ответ на свою сказочку получил целый сборник заблуждений.
Нельзя же схватив где нибудь какую-то инфу считать ее универсальной и втыкать ее везде, не глядя - а вклеится ли она в текущий контекст. Или станет ложью?
И зачем вообще это? Байка совсем не об терминологии компиляции.
Цитата:

Сообщение от Taugeshtu (Сообщение 191770)
Хорошая сказочка, но вредная.

Опираясь на слова б.Мюнхгаузена, это серьезное выражение лица - вредное.:)
А сказка - ложь, но не может быть вредной. Из нее либо извлекают урок либо нет. Зависит от читателя.

Taugeshtu 17.06.2011 02:47

Ответ: Объясните разницу между Delphi и C++
 

Цитата:

Зависит от читателя.
Мне не повезло, я плохой читатель.
Цитата:

И в ответ на свою сказочку получил целый сборник заблуждений.
А вот теперь и вскрылся мой коварный план - разбор полёта (теперь уже моего) в студию. Или в ЛС (с целью устранения заблуждений и дезинформации)

DjeeZ 17.06.2011 03:21

Ответ: Объясните разницу между Delphi и C++
 
Не люблю эту ерунду с цитированием разводить. Бесполезную. Да еще не совсем по теме получится. Но раз поступила заявка, разбор полёта сейчас направлю в личку.:)

Randomize 17.06.2011 10:48

Ответ: Объясните разницу между Delphi и C++
 
В каком году они гуй ускоряли да с win32 совмещали? В 1995 году, то? А зачем?
На сколько мне известно из личного использования Delphi 1,3,6,7 он своими VCL в большинстве случаев юзал тупо WinApi и всё. Эти VCL - это тупо обёртки. И так было всегда. А что там на машинных когда - не понятно. Там тупо репозитарий модулей и всё. Один другой юзает и так далее.

* тред особо не читал, но осуждаю

h1dd3n 17.06.2011 11:02

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

Ну вобще DEDE.
А че про IDR забыли? Там щас бетка (закрытая) которая почти паскалевский код даёт (для всех версий делфей). Да и открытая версия тоже ничего)

impersonalis 17.06.2011 11:18

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

Сообщение от h1dd3n (Сообщение 191912)
А че про IDR забыли? Там щас бетка (закрытая) которая почти паскалевский код даёт (для всех версий делфей). Да и открытая версия тоже ничего)

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 50 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

DjeeZ 17.06.2011 22:15

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

Сообщение от Randomize (Сообщение 191911)
он своими VCL в большинстве случаев юзал тупо WinApi и всё. Эти VCL - это тупо обёртки.

Большим специалистам, конечно виднее, но вроде как проги на асме для Win32 и занимаются юзаньем WinApi - что им ещё остаётся, кто их к прямым каналам доступа пустит? Конечно не все функции, но самые необходимые - обязательно. Многого про Делфи я не помню, многого и не знал никогда, но в vcl ассемблера вроде как предостаточно.

Цитата:

Сообщение от DjeeZ (Сообщение 191758)
Но зато могу привести свои тогдашние представления по данному вопросу.

На всякий, напомню. Не стоило воспринимать слишком всерьёз.;)

Цитата:

Сообщение от Randomize (Сообщение 191911)
А что там на машинных когда - не понятно. Там тупо репозитарий модулей и всё.

Например,- я и не представляю как это можно было понять.
Если мое скромное мнение немножко считается, то не думаю что пользователь программы может засечь использование ассемблерного кода в исполняемых файлах. Или скомпилированных библиотеках.
Он просто, по сути перетаскивает, данный код в свою прогу в составе другого кода, и с большим запасом лишнего кода, который не используется. И не слишком интересуется - что там.
А если не считается, то и ладно, но вот эту игру - kkrieger порекомендовал бы еще раз запустить тем, кто забыл или скорее - новичкам, в качестве пособия по поиску ассемблерных решений в многомегабайтных продуктах.
Извиняюсь, если в каком то вопросе проявил невежество.

h1dd3n 17.06.2011 22:50

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

Сообщение от impersonalis (Сообщение 191914)
*** скрытый текст ***

В закрытом бетатесте я не состою) не подоспел вовремя) Ну думаю скоро крипто выложит эту версию в паблик. Сам IDR (2.3 версия сейчас) - сюда http://kpnc.org/idr32/ru/index.htm
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 1000 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

impersonalis 17.06.2011 23:53

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

Сообщение от h1dd3n (Сообщение 192002)
В закрытом бетатесте я не состою) не подоспел вовремя) Ну думаю скоро крипто выложит эту версию в паблик. Сам IDR (2.3 версия сейчас) - сюда http://kpnc.org/idr32/ru/index.htm
*** скрытый текст ***


Фича, я так понимаю, скрывается здесь:
Цитата:

IDR выполняет статический анализ (анализируемый файл не запускается на выполнение), что позволяет безопасно изучать вирусы, трояны и прочие приложения, запуск которых опасен или нежелателен.
Ну-у-у-у... не знаю. Вон тот жа DeDe почти без проблем глотает сделанное и на другом продукте Борланд - Builder C++, а как IDR?

h1dd3n 18.06.2011 00:47

Ответ: Объясните разницу между Delphi и C++
 
фича IDR в том что деде заглох уже давно) и кроме делфей 7 ничего нормально не распознает. IDR же - Interactive Delphi Reconstructor и на данный момент делает лучший анализ 2005+ версий. Распознает ли оно борландовские плюсы не знаю). Единственный минус - нет сохранения в делфи-прожект (точнее уже давно есть да автор все ленится залить новую версию). Компенсируется это тем что можно сгенерировать idc скрипт для ida pro (ну и как я уже говорил скоро будет 2.5. там все работает.).

Twice 21.06.2011 10:51

Ответ: Объясните разницу между Delphi и C++
 
Как перестать программировать на Delphi и начать жить!

L-ee-X 23.06.2011 01:57

Ответ: Объясните разницу между Delphi и C++
 
На засыпку почитайте ))

Сравнение C++ и Delphi

Знающие люди советуют новичкам учить Pascal или Delphi (ранее известный под кодовым именем Object Pascal), а не C++. Основной тезис в пользу выбора Delphi звучит так:

C++ сложнее чем Delphi.
или
С++ сложнее чем Pascal.

Почитатели богомерзкого Delphi сумели внушить эту ложную мысль тысячам начинающих программистов.
После того как наивный новичок поддался на их уговоры, культисты Delphi совращают его всякими непотребствами: визуальным программированием и библиотеками VCL и CLX. Судьба программиста, выбравшего тёмную сторону силы, ужасна: в скором времени ему предстоит написать текстовый редактор, используя компоненты TMemo, TPopupMenu, TMainMenu. В процессе работы над редактором наступают необратимые нарушения в психике. Но это только начало! Выбравшему Delphi предстоит сделать невозможное для пользователя C++ - написать браузер, используя компонент TWebBrowser. Теперь новоявленный разработчик превращается в пропагандистскую машину, готовую уничтожить любого, кто заикнётся, что C++ не сложнее Паскаля.

Ну а теперь серьёзно:
Чтобы понять, действительно ли C++ сложнее Delphi, достаточно рассмотреть базовые возможности языков программирования. Ведь именно над изучением этих возможностей первое время будет корпеть начинающий программист.
Цель данной статьи посредством простых примеров опровергнуть совершенно лживое утверждение о сложности C++ по сравнению с Паскалем.

Создание Windows программы в Delphi за пять минут

Для начала следует хорошо уяснить следующее: какой бы язык программирования не изучался, первое время придётся работать с простым текстом. Выучить Delphi, начав создавать оконные приложения, очень и очень сложно. Практически все новички после создания пары окон с TEdit и TLabel, переходят к консольным программам.
Максимум что можно сделать с помощью визуального программирования на первых порах - повторить примеры из учебника. О написании более-менее сложной программы не может идти и речи.

Delphi и Object pascal

На данный момент Delphi и Object Pascal - это одно и то же. Раньше было разделение: Delphi - среда разработки (такая же как Visual C++), а Object Pascal - язык программирования (как C++).
И ещё одно: когда говорят Delphi, имеют ввиду Pascal. И наоборот. В настоящее время это два неразрывно связанных понятия.
Далее будут рассмотрены базовые понятия, которые встречаются на пути у каждого, кто хочет изучить какой-либо язык программирования.

Общая структура программ на Delphi и С++

Программы на любом языке состоят из операторов. Если совсем просто, оператор - это команда процессору выполнить какое-нибудь действие.
И в C++, и в Паскале (а соответственно и в Delphi) конец оператора обозначается точкой с запятой.
В обоих языках для комментариев используются символы // - две косых черты. Комментарий - это текст в программе, который не будет выполняться процессором. Теперь посмотрим на общую структуру программы на С++ и Delphi:
PHP код:

// программа на С++
// глобальная область видимости
int main ()
{
  
// код программы - операторы
  
return 0;
}

// программа на Delphi
program someProgram;
// разделы

begin
  
// код программы - операторы
end

Программа на C++ начинается с глобальной области видимости. Далее идёт строка int main(). После этой строки нужно поставить две фигурные скобки (открывающую и закрывающую). Код программы должен находиться внутри фигурных скобок. Обязательно нужно написать как минимум один оператор - return 0;.
Программа на Delphi начинается с ключевого слова program, после которого пишется имя программы. Далее идёт список разделов. Код программы должен находиться между ключевыми словами begin и end.
Тут самое важное: в C++ код находится между фигурных скобок, а в Pascal - между словами begin и end.

Переменные в Delphi и C++

Переменные предназначены для хранения и использования данных во время выполнения программы.
И С++, и Delphi - строго типизированные языки. Это значит, что в этих языках программирования для хранения разных данных используются разные типы переменных. Например, для хранения целого числа используется переменная одного типа, для хранения вещественного - другого.
Для целых чисел в C++ используется обозначение int, в Delphi - integer. Дробные числа в C++ - float, в Delphi - real.
В С++ переменные можно объявлять в любом месте программы. Использовать их можно в любом месте, за исключением глобальной области видимости:
PHP код:

int a;   // объявление переменной целого типа

int main ()
{
  
2;
  
float b// объявление переменной вещественного типа
  
0.5;
  return 
0;


Для создания переменной в C++ нужно написать тип и имя переменной.
В Delphi переменные обязательно должны объявляться в разделе var:

PHP код:

program someProgram;
var
  
ainteger// объявление переменной целого типа
  
breal;    // объявление переменной вещественного типа

begin
  a
:=2;
  
b:=0.5;
end

Для создания переменной в Delphi необходимо, чтобы её объявление находилось в разделе var. Создание переменной в Delphi выглядит так: имя переменной, двоеточие, имя типа.
Для присваивания в C++ используется знак =, в Delphi - :=. Операция присваивания берёт то, что находится справа от знака и помещает это в переменную, находящуюся слева от знака присваивания. В обоих наших программах, после выполнения всех операторов, переменная a будет хранить значение 2, а переменная b - 0,5.

Управляющие структуры: ветвления и циклы на Delphi и C++

Управляющие структуры - самая важная часть любого языка. Они изучаются практически в самом начале знакомства с языком.
Управляющие структуры предназначены для управления (кто бы мог подумать) последовательностью выполнения операторов языка.
Любую программу можно написать, используя три управляющие структуры:
Следование. Данная управляющая структура говорит, что программа будет выполняться последовательно:
PHP код:

a:=3;
b:=1;
a:=a+b

Глядя на этот код, можно с уверенностью сказать, что сначала переменной a будет присвоено значение 3, затем переменной b присвоится значение 1 и в конце переменной a будет присвоено значение 4. Это и называется последовательным выполнением. Т.е. процессор выполняет команды вашей программы сверху вниз одну за другой.
Выбор. Для выбора во всех языках используются ветвления. Данная управляющая структура позволяет выбрать, какой код будет выполняться, в зависимости от условия.
PHP код:

// C++
if ( 0)
{
  
1;
}
else
{
  
0;
}

// Delphi
if a>0 then
begin
  b 
:= 1;
end
else
begin
  b 
:= 0;
end

Если переменная a больше нуля, то b присваивается 1, а если переменная a меньше или равна нулю, то b будет равна нулю.
Как видим, отличия небольшие - использование ключевого слова then в Delphi и обязательные скобочки вокруг условия в C++. Существуют и другие формы ветвлений, но мы их рассматривать не будем.
Повтор. Для повторов кода используются циклы. Рассмотрим два вида - циклы for и while.

PHP код:

// цикл for на Delphi
b:=0;
for 
a:=1 to 10 do
begin
  b
:= a;
end;

// цикл for на C++
b=0;
for (
a=1<= 101)
{
  
a;


Циклы позволяют выполнить группу операторов несколько раз. В данном примере, после окончания цикла, переменная b будет принимать значение 10.
На C++ цикл for немного сложнее чем на Delphi. В цикле for на C++ нужно указать три параметра: инициализацию счётчика, условие выхода из цикла, изменение счётчика. На Delphi нужно указать только начальное и конечное значение.

PHP код:

// цикл while на Delphi
a:=10;
while 
do
begin
  a 
:= 1;
end;

// цикл while на С++
a=10;
while (
0)
{
  
1;


Цикл while на C++ и Delphi почти одинаковый. На Delphi нет скобочек вокруг условия, и присутствует слово do.

Массивы в Delphi и C++

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

PHP код:

// массивы в Delphi
program someProgram;
Var
  
a: array [1..10of integer// объявление массива

begin
  a
[1] := 5// использование массива
end;

// массивы в С++
int main()
{
  
int a[10]; // объявление массива 
  
a[0] = 5;  // использование массива


Массивы в Delphi объявляются в разделе var. Самое важное отличие: на Delphi элементы массива можно нумеровать с единицы, а на C++ - только с нуля. В остальном, массивы используются одинаково.

Функции в Delphi и C++

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

PHP код:

// функции в Delphi
program someProgram;
var
  
breal;
  
creal;

function 
someF(areal): real//определение функции
begin
  someF
:=a;
end;

begin
  c 
:= 5;
  
:= someF(c);
end.

// функции в c++
float b;
float c;

float someF (float a)   // определение функции
{
  return 
a;
}

int main()
{
  
5;
  
someF(c);
  return 
0;


Перед названием функции в Delphi указывается ключевое слово function. После круглых скобочек стоит двоеточие и имя типа возвращаемого значения. В C++ имя типа возвращаемого значения стоит перед именем функции.
Важное отличие: в C++ внутри определения функции используется оператор return, в то время как в Delphi для возвращения значения из функции используется имя этой функции.

На закуску: О простоте Delphi

Вам могло показаться, что в начале данной статьи я очерняю (или даже оскорбляю) поклонников Delphi. Уверяю вас это не так. Большнинство из них реально зомбированы!
Когда я начал писать статью, я хотел дать слово другой стороне. Ну, чтобы поклонники Delphi могли показать действительно простые по сравнению с C++ примеры кода. Для этого, я на одном из форумов попросил привести примеры кода на Delphi, когда в очередной раз была затронута тема C++ vs. Delphi. Мой собеседник не разочаровал:

PHP код:

type 
TLogger 
= class 
  protected 
  class var 
    
FLogger TLogger;
  public 
    
FText TStringList
    
constructor Create
    
destructor Destroyoverride
    class 
operator Implicit(Line String) : TLogger;

  
strict private 
  class var 
    class 
constructor Create;
end

constructor TLogger.Create
begin 
  inherited


  
FText := TStringList.Create
end

destructor TLogger.Destroy
begin 
  FText
.Free

  
inherited
end

class 
operator TLogger.Implicit(Line String) : TLogger
begin 
  FLogger
.FText.Add(Line); 

  
Result := FLogger
end

class 
constructor TLogger.Create
begin 
  FLogger 
:= TLogger.Create
end


Я возликовал через пять минут, которые потребовались, чтобы разобраться в коде и оценить его гениальность (и конечно же, простоту). О таком подарке я даже и не мечтал!
Код в примере выше перегружает оператор присваивания (о перегрузке операторов можно почитать в разделе C++). Вот как этот код будет выглядеть на C++:

PHP код:

class TLogger 
{
public: 
  list 
FText;
  
void operator= (string Line
  { 
    
FText.push_back(Line);
  } 
}; 

Считаем: 9 строк на C++ против тридцати трёх на Delphi!!! А что, на C++ действительно сложнее получилось: видите там фигурные скобки какие-то дурацкие - ничего не разобрать! При этом код на C++ работает всегда, а код на Delphi будет работать только при выполнении определённых условий. При этом, при написании кода на Delphi использовались... ээммм... так сказать, не слишком известные особенности языка.
Я тут же спросил своего собеседника, действельно ли он считает, что код, который привёл он, проще и понятнее моего. На что оппонент, не моргнув глазом, ответил, что да, проще. Я же говорю, это страшные люди!
Вот такой вот коленкор.

Какой язык выбрать: C++ или Object Pascal, Delphi?

Те возможности, которые рассматривались выше, присущи любому языку программирования. Повторяю, любому! Какой бы язык вы не выбрали для изучения, первое время вы будете осваивать следующее: использование переменных, циклы, ветвления, массивы, функции. Это самые важные вещи, без которых программирование вообще немыслимо.

На начальном этапе разницу в сложности вы просто не заметите! Собственно, её и нет. Нужно быть психбольным, чтобы утверждать, что один дополнительный параметр в цикле for делает изучение C++ в разы сложнее.
Тут важный момент! Нужен хороший учебник. Я вот уже писал про книгу "Язык программирования C++". Если вы хотите забросить изучение C++ через пару часов после начала, лучшей книги вы не найдёте. Сам-то я паренёк тёмный, но вот люди советуют, дескать где-то в интернетах есть сайтик с хорошими уроками по C++. Как бишь его... кажется, shatalov.su.
Кто говорит, что C++ сложнее Delphi, тот или не знает о чём он говорит, или лжёт. Можно с полной уверенностью утверждать, что сложность у них (как минимум) одинаковая. Думаю, мне удалось это показать на примитивных примерах.
В статье не были затронуты ещё две важные темы, с которыми придётся столкнуться новичкам: указатели и классы. Но там такая же ситуация - отличия минимальны.

h1dd3n 23.06.2011 02:13

Ответ: Объясните разницу между Delphi и C++
 
Если честно в делфи меня всегда бесили сраные begin и end; :)

HolyDel 23.06.2011 02:44

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

list FText;
может std::list<std::string>?
Цитата:

a = a - 1; a = a + 1
ппц

L-ee-X 23.06.2011 05:02

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

Цитата:

a = a - 1; a = a + 1
ппц
a-- ; a++ ?? :)

wolfhound512 23.06.2011 11:04

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

Сообщение от L-ee-X (Сообщение 192767)
a-- ; a++ ?? :)

В данном случае лучше
--a; ++a;

Randomize 23.06.2011 11:08

Ответ: Объясните разницу между Delphi и C++
 
inc(a); dec(a); ??

falcon 23.06.2011 15:39

Ответ: Объясните разницу между Delphi и C++
 
хоть мой мозг насмерть съели плюсы и вряд ли я с них когда-нибудь слезу, но всё-таки многим лучше начинать с паскаля.
особенно полным новичкам.
хеловёрлд на плюсах:
Код:

#include <iostream>
using namespace std;
int main()
{
    cout<<"Hello world!"<<end;
}

(кстати return 0; вовсе не обязателен)
программа которая выводит сообщение в поток вывода.
так ли она проста?
попробуйте объяснить новичку, что такое деректива препроцессора #include, зачем там объявлены заголовки классов и т.п.
потом объясните что такое пространства имён..
что такое ф-ция, зачем нужна main почему int и почему в данном случае не нужно return (или если вы решите его оставить - зачем оставили)
или скажите "ну вам сейчас это не нужно, вернёмся к этому потом", но уверяю вас, слишком часто придётся говорить эту фразу, а в итоге большая часть аудитории просто забросит изучение..

на паскале тот же пример будет намного наглядней и проще.
была одна публикация.. сравнение С и Pascal для начинающих, до того как я её прочитал, я был мнения, что лучше сразу начинать с Си. Теперь вот напротив. Если кому интересно, могу поискать эту статейку)

ffinder 25.06.2011 14:22

Ответ: Объясните разницу между Delphi и C++
 
ты забыл главное - ввод\вывод основан на перегрузке операторов (!), которые часто являются функциями-членами (!!) классов (!!!), или даже friend-функциями (!!!!).
вот такая вот кривая обучения - всё сразу или ничего вообще.
но паскаль уже давно не торт. ну вот кому он сейчас нужен? забивать ресурс мозга лишними знаниями?

falcon 25.06.2011 14:36

Ответ: Объясните разницу между Delphi и C++
 
Я просто решил не уточнять ))))

>>но паскаль уже давно не торт. ну вот кому он сейчас нужен? забивать ресурс мозга лишними знаниями?

в вопросах обучения прогингу, его актуальность уходит на задний план.
Чего такого нету в паскале, что действительно скажется на развитии программиста?
Абсолютному новичку намного важнее интуитивно понятный синтаксис и конструкции нежели актуальность, производительность, гибкость и т.д и т.п...
Освоив основы алгоритмизации и кодирования, можно постепенно переходить к концептуальным подходам к разработке.. Тогда и язык по актуальней можно выбрать ( шарп, жава, плюсы.. )
По крайней мере выбор будет уже более или менее объективным.. И нету тут никакого забивания лишними знаниями. Я вообще сейчас прихожу к тому, что лишних знаний не бывает)
Но уж если на то пошло, то в начале обучения перегрузка операторов, классы и объекты - намного более лишнее знание)

ffinder 25.06.2011 17:10

Ответ: Объясните разницу между Delphi и C++
 
если уж пошла речь про обучение программированию, то в MIT первый язык на первом курсе - Scheme.
ящитаю это лютый и бешеный вин.
жаль у нас такого не было. начинали с Q-Basic'a...

falcon 25.06.2011 19:29

Ответ: Объясните разницу между Delphi и C++
 
http://file.qip.ru/document/LvlQdMzE/anti_c_v03.html
зачитай))
если уж сам говорил об ненужных знаниях, каковы шансы молодому специалисту устроиться работать со scheme ? (на фоне Java-ондроедов или там C# с чем-нито ещё)
Я вот пока не видал таких вакансий))

ffinder 25.06.2011 22:06

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

Сообщение от falcon (Сообщение 193086)

сорри, нехочется качать что-то левое с квипа.
если там про критику сиплюсов - то я читал уже как минимум 5 статей по этому поводу и 90% в них - правда.

Цитата:

Сообщение от falcon (Сообщение 193086)
если уж сам говорил об ненужных знаниях, каковы шансы молодому специалисту устроиться работать со scheme ? (на фоне Java-ондроедов или там C# с чем-нито ещё)
Я вот пока не видал таких вакансий))

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

falcon 26.06.2011 00:23

Ответ: Объясните разницу между Delphi и C++
 
>>если там про критику сиплюсов
там о том, почему начинать обучение в вузе лучше с паскаля чем с Си.

>>и в качестве первого языка Схема рулит. она дает понимание как оно там все внутри компилятора устроено.

разве при обучении программированию, понимание того как оно происходит "внутри компилятора" стоит на первом месте?..
не подумай, что я считаю, мол этого знать не надо. Но если трезво судить, новичку лучше понять как значения переменных местами менять, да массивы пузырьком сортировать..
если у него есть уже подобная база, то он сам сможет себе выбрать язык (scheme в т.ч.).. ну по крайней мере попытаться))
а паскаль - классика.. тонны примитивных алгоритмов разбираются именно на нём.

HolyDel 26.06.2011 00:30

Ответ: Объясните разницу между Delphi и C++
 
мне кажется, обучать программированию на языке непохожем на любые промышленные (языки) - неправильно.

falcon 26.06.2011 00:54

Ответ: Объясните разницу между Delphi и C++
 
HolyDel я тож так считаю и собсно сказал это, но на самом деле тут тоже есть свои нюансы.. если действительно качественно освоить методики разработки ПО, да ещё и знать как оно там работает на самом низком уровне - принципиально не важно какой ты будешь учить язык. В конце концов в промышленности переходя от проекта к проекту может потребоваться менять и языки, и текхнологии.. надо уметь учиться)

ffinder 26.06.2011 02:53

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

Сообщение от falcon (Сообщение 193051)
Абсолютному новичку намного важнее интуитивно понятный синтаксис и конструкции нежели актуальность, производительность, гибкость и т.д и т.п...
Освоив основы алгоритмизации и кодирования, можно постепенно переходить к концептуальным подходам к разработке.. Тогда и язык по актуальней можно выбрать ( шарп, жава, плюсы.. )

а потом вы начинаете про то, что на схеме работу не найдешь...
учиться - на одном, работать - на очень разном.

falcon 26.06.2011 09:33

Ответ: Объясните разницу между Delphi и C++
 
Цитата:

Сообщение от ffinder (Сообщение 193143)
а потом вы начинаете про то, что на схеме работу не найдешь...
учиться - на одном, работать - на очень разном.

отличная позиция - пропускать пол текста мимо ушей.
кстати я особо и не настаивал на этом и даже уточнил, мол ради бога, учитесь на чём хотите.))
аргументировать же твой "вин" со схемой ты нужным не счёл)
:super:


Часовой пояс GMT +4, время: 19:31.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot