Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/95: Рейтинг темы: голосов - 95, средняя оценка - 5.00
39 / 39 / 20
Регистрация: 23.04.2012
Сообщений: 462
Записей в блоге: 2

Pascal vs C++

24.12.2012, 11:47. Показов 23800. Ответов 209
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Раньше программировал на языке паскаль. Теперь перехожу на С++, изучаю по книге Дейтлов.
Так вот у меня вопрос, в чём отличие между Паскалём и С++? Я слышал, что возможностей у с++ больше чем у паскале, так какие же эти возможности? Лично я пока их не замечал (может быть потому что пока начинающий) кроме сложности языка с++
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.12.2012, 11:47
Ответы с готовыми решениями:

Turbo Pascal, Pascal ABC, Free Pascal, PascalABC.NET - в чем разница?
Всем привет, решил изучать Паскаль, но на форуме увидел 4 его версии - Turbo Pascal, Pascal ABC, Free Pascal, PascalABC.NET и не понял, в...

Различия трансляторов Pascal ABC.Net и Turbo/Borland Pascal
Пожалуйста, объясните различия между компиляторами Pascal ABC.Net и Turbo/Borland Pascal

Нужно перевести программу с Turbo Pascal в Pascal ABC.NET
Вот есть программный код , но он для турбо паскаля, помогите перевести его в АБС.NET Program graphics; uses graph; var...

209
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
20.12.2014, 02:13
Студворк — интернет-сервис помощи студентам
Так зачем с++ если в итоге мы все равно пишем машинный код руками?
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 02:22
Цитата Сообщение от castorsky Посмотреть сообщение
Затем чтобы реально оценить сложность реализации той или иной возможности нового языка. А затем и необходимость этой возможности вообще.
А я думаю немного по другому можно - вынести в компилятор нового языка то что задолбались делать макросами и т.п в старом.

Добавлено через 6 минут
Цитата Сообщение от castorsky Посмотреть сообщение
Так зачем с++ если в итоге мы все равно пишем машинный код руками?
Во первых до трансляции непосредственно в машкод дело пока что не доходило, хватает бинарных деревьев. Но это ужо почти крайний случай.
В подавляющем большинстве случаев хотя бы класс функции известен, а соответственно входные данные в виде тех или иных массивов данных. Но во всех случаях прятать функцию так чтобы ее нельзя было вызвать из других функций смысла не имеет. Наоборот имеет смысл ее экспортировать в другие модули.
Опять же - библиотека парсинга в бинарные деревья была когда то давно-давно написана и отлажена за час. И пишем мы его не руками, а программно, в случае чего. Зачем тогда Java и PHP если в них есть функция eval?
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
20.12.2014, 02:23
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А я думаю немного по другому можно - вынести в компилятор нового языка то что задолбались делать макросами и т.п в старом.
Это подход не развития, а бесконечного расширения. Что с языком и происходит. Потому что всегда есть что-то что хотелось бы сделать немного компактней. В итоге получается венегрет из всего.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 02:24
Цитата Сообщение от castorsky Посмотреть сообщение
а бесконечного расширения
Расширения - это вообще-то библиотеки
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
20.12.2014, 02:28
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Во первых до трансляции непосредственно в машкод дело пока что не доходило, хватает бинарных деревьев. Но это ужо почти крайний случай.
В подавляющем большинстве случаев хотя бы класс функции известен, а соответственно входные данные в виде тех или иных массивов данных. Но во всех случаях прятать функцию так чтобы ее нельзя было вызвать из других функций смысла не имеет. Наоборот имеет смысл ее экспортировать в другие модули.
Опять же - библиотека парсинга в бинарные деревья была когда то давно-давно написана и отлажена за час. И пишем мы его не руками, а программно, в случае чего.
я умываю руки. Всего хорошего.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 03:17
Цитата Сообщение от castorsky Посмотреть сообщение
я умываю руки. Всего хорошего.
Или вы намекаете на то что пора свой компилятор разрабатывать? Так меня пока что и С++ устраивает. Хотя была конечно дурная идея - сделать компилятор с блок-схем

Добавлено через 44 минуты
Цитата Сообщение от korvin_ Посмотреть сообщение
Э нет, множество как минимум является первоклассным объектом, в отличие от. Множество может быть неупорядоченным, в отличие от.
А операторы тоже никто не упорядочивает. В каком порядке записаны в таком и выполняются. А то их хоть по убыванию по алфавиту упорядочивай, хоть по возрастанию... черте что получится...
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
20.12.2014, 10:16
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А операторы тоже никто не упорядочивает. В каком порядке записаны в таком и выполняются.
Это и есть порядок, лол, иначе вся императивщина пошла бы на смарку, т.к. ты не смог бы по тексту программы определить, какой оператор выполнится первым, а какой — следующим.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 10:28
Цитата Сообщение от korvin_ Посмотреть сообщение
Это и есть порядок, лол, иначе вся императивщина пошла бы на смарку, т.к. ты не смог бы по тексту программы определить, какой оператор выполнится первым, а какой — следующим.
А может еще и алфавит - упорядоченная последовательность? На самом деле абсолютно случайная взятая за образец.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
20.12.2014, 10:34
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну и не пытайтесь тогда расказать какой хороший лисп. Потому что для выполнения этой операции он вызывает именно это гавно
Ты не понимаешь разницы между тем, как что-то выглядит и тем, чем оно является внутри?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
То что комманды скриптовых языков кто то выполняет. и этот кто-то написан на С++
1) Common Lisp компилируется в нейтив, без всяких C++.
2) Рантаймы скриптовых языков чаще пишут на Сях, чем на плюсах, ибо проще.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Возможность добавить/удалить метод объекта в runtime
В Джаве этого нет.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну не знаю шаблоны пользую редко.
Че, Билдер их хреново поддерживает? =))

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Как на меня минус, но тоже зависит от задачи.
Речь шла не о том, хорошо это или плохо, а о различиях.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Учитывая специфику (байт-код и виртуальній проц) там невиртуальным взяться неоткуда.
Лооол. Всё понятно, кому я объясняю?.. Ты хоть знаешь, чем виртуальный метод отличается от невиртуального?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Я ж говорил - все у вас пасквилянтов задом наперед. Сначала надо дорасти мыслью к примеру до перегрузки операторов, а потом посмотреть в справочнике каким образом это реализовывается.
Лооол. Больше нет слов.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А если ни значения [2,2,2] ни размер [] ни 1 ни даже + или - не известны во время компиляции, тогда как?
тогда так:
Haskell
1
map f xs
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Чем тогда компилировали первый компилятор языка?
Ничем, его писали на ассемблере.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вы ухо тоже чешите обматывая руку вокруг головы?
Просветись уже.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 10:34
Кстати, интересный вопрос возник. А насколько по нашим временам будет актуален компилятор с блок-схем ну для начала хотя бы в Java-байт код?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
20.12.2014, 10:37
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А может еще и алфавит - упорядоченная последовательность?
Внезапно?

Добавлено через 2 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Во первых до трансляции непосредственно в машкод дело пока что не доходило, хватает бинарных деревьев.
Функция cos, введенная пользователем, в твоем примере тоже реализована через эти деревья?
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 10:43
Цитата Сообщение от korvin_ Посмотреть сообщение
Функция cos, введенная пользователем, в твоем примере тоже реализована через эти деревья?
Да. Дерево с одной веткой.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
                        TFunction *ret1=new TFunction();
                        AnsiString t1=Function.SubString(End+1,Function.Length()-End);
                        switch (OperationType){
                               case otSin   : ret1->OnCalc=sin; break;
                               case otCos   : ret1->OnCalc=cos; break;
                               case otTg    : ret1->OnCalc=tan; break;
                               case otCtg   : ret1->OnCalc=ctg; break;
                               case otArcsin: ret1->OnCalc=asin; break;
                               case otArccos: ret1->OnCalc=acos; break;
                               case otArctg : ret1->OnCalc=atan; break;
                               case otArcctg: ret1->OnCalc=actg; break;
                               case otLn    : ret1->OnCalc=log; break;
                               case otLog   : ret1->OnCalc=log10; break;
                        }
                        ret1->LeftNode=CreateTree(t1,Variables);
                        ret1->RightNode=NULL;
                        return ret1;
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
20.12.2014, 11:01
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Да. Дерево с одной веткой.
Нет, я имел в виду реализацию самих функций, ты ж их берешь из готовых библиотечный sin, cos и т.д.

Ладно, теперь вернемся к операторам +, - и т.д., как они реализованы?

Добавлено через 8 минут
P.S. Вместо захардкоженного свича, лучше было сделать хешмап или массив.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 11:17
Цитата Сообщение от korvin_ Посмотреть сообщение
Нет, я имел в виду реализацию самих функций, ты ж их берешь из готовых библиотечный sin, cos и т.д.
Да из библиотечных.
Цитата Сообщение от korvin_ Посмотреть сообщение
Ладно, теперь вернемся к операторам +, - и т.д., как они реализованы?
Точно так же. только есть вторая ветвь в дереве.

Добавлено через 3 минуты
Цитата Сообщение от korvin_ Посмотреть сообщение
P.S. Вместо захардкоженного свича, лучше было сделать хешмап или массив
Во первых коду лет 15, во вторых писался по принципу кому-то сдавать неделю назад, кому уже не помню.... там кстати еще и счетчик не с нуля начинается, хотя это поправимо... да и оптимизатор компилятора тоже не дурак, меняет switch на таблицу джампов;

Добавлено через 2 минуты
Эт если user defined функции прикручивать - тогда да.

Добавлено через 7 минут
Я когда то когда увидел что оптимизатор BC 3.1 поменял
C++
1
2
3
for (int i=0;i<CopySize;i++){
      *Ptr=*Ptr+Shift;
}
на
MOVS
на ассемблерные вставки и оптимизацию забил напрочь. как удобней в данном куске кода так и пишу. Главное алгоритмы оптимизировать.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
20.12.2014, 11:18
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Точно так же. только есть вторая ветвь в дереве.
Я имею в виду:
C++
1
case otPlus: ret1->onCalc = operator+; break;
или что?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Во первых коду лет 15, во вторых писался по принципу кому-то сдавать неделю назад, кому уже не помню
Но все же, почему было не воспользоваться классами с методом onCalc, объекты которых, представляли бы узлы дерева?
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 11:32
PS: а да кстати, там еще было условие чтоб поняли тот кто сдает и тот кто принимает. Тот кто принимает всю жизнь писал на FORTRAN.

Добавлено через 1 минуту
Цитата Сообщение от korvin_ Посмотреть сообщение
case otPlus: ret1->onCalc = operator+; break;
Нет набор микро-классов, поражденных от базового класса - элемент дерева, конструктор, деструктор, метод OnCalc

Добавлено через 1 минуту
Цитата Сообщение от korvin_ Посмотреть сообщение
Но все же, почему было не воспользоваться классами с методом onCalc, объекты которых, представляли бы узлы дерева?
Так это код добавления элементов являющихся функциями в дерево.

Добавлено через 5 минут
Вернее метод Сalc. А у элемента функция(TFunction) - еще и указатель OnCalc на библиотечную функцию которую он вызывает.

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
                 case dtBinarOperation:{
                        AnsiString t1=Function.SubString(1,Start);
                        AnsiString t2=Function.SubString(End,Function.Length()-End+2);
                        switch (OperationType){
                               case otOr  : ret=new TOr()  ; break;
                               case otAnd : ret=new TAnd() ; break;
                               case otAbove:ret=new TAbove() ; break;
                               case otBelow:ret=new TBelow() ; break;
                               case otEqual:ret=new TEqual() ; break;
                               case otAdd : ret=new TAddition() ; break;
                               case otSub : ret=new TSubstraction() ; break;
                               case otMul : ret=new TMultiplection() ; break;
                               case otDiv : ret=new TDivision() ; break;
                               case otPow : ret=new TPow() ; break;
                               case otRoot: ret=new TRoot(); break;
                        }
                        ret->LeftNode=CreateTree(t1,Variables);
                        ret->RightNode=CreateTree(t2,Variables);
                        return ret;
                        }
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
20.12.2014, 11:52
Fulcrum_013, ну вот видишь, пришлось на каждую операцию по отдельному классу создавать, а были бы лямбда-выражения:
C++
1
2
3
4
5
6
TFunction2 *ret1 = new TFunction2();
switch(operationType) {
    case otOr:  ret1->OnCalc = fun(x, y) { return x || y }; break;
    case otAnd: ret1->OnCalc = fun(x, y) { return x && y }; break;
    ...
}
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 12:03
А с лямбда выражениями на один CALL больше чем надо.

Добавлено через 3 минуты
Мало того, в случае необходимости можно к классам приделать метод GenerateCode - и хоть в машкод и хоть куда угодно
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
20.12.2014, 12:06
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А с лямбда выражениями на один CALL больше чем надо.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
на ассемблерные вставки и оптимизацию забил напрочь. как удобней в данном куске кода так и пишу. Главное алгоритмы оптимизировать.
Что-то здесь не сходится.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Мало того, в случае необходимости можно к классам приделать метод GenerateCode - и хоть в машкод и хоть куда угодно
Так что же ты синусы, косинусы и прочее не вынес в отдельные классы? И вообще, ты так говоришь, как будто в плюсах процедуры компилятся не в машкод.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
20.12.2014, 12:20
Цитата Сообщение от korvin_ Посмотреть сообщение
Так что же ты синусы, косинусы и прочее не вынес в отдельные классы? И вообще, ты так говоришь, как будто в плюсах процедуры компилятся не в машкод.
А в синусах-косинусах этот СALL никуда не деть.
C++
1
2
3
4
5
6
7
8
9
10
TFunnction::Calc(){
               return OnCalc(LeftNode->Calc); // вот он этот CALL
}
TAdditional::Calc(){
               return LeftNode->Calc+RigthNode->Calc; //а тут его нет а с лямбдой будет
//если сделать так
}
TCos::Calc(){
               return cos(LeftNode->Calc); // этот CALL никуда не денется.
}
Добавлено через 3 минуты
Цитата Сообщение от korvin_ Посмотреть сообщение
И вообще, ты так говоришь, как будто в плюсах процедуры компилятся не в машкод.
И шо? Таскать за прогой BCC32 и TLINK32 c кучей либ и темплэйтом проджекта DLL, потом компилить, потом этот DLL подгружать? потом его еще не перепутать? и тока чтобы удалить, т.к. в сявку юзверя удобней сохранить исходный текст а не DLL.

Добавлено через 5 минут
Цитата Сообщение от korvin_ Посмотреть сообщение
Что-то здесь не сходится.
Это оптимизатор не оптимизирует. Сколько ему вызовов указали столько и будет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.12.2014, 12:20

Нужно перевести код из Turbo Pascal в Pascal ABC.NET
Доброго времени суток. На форуме находил похожие темы, но к сожалению так и не смог разобраться. Помогите пожалуйста перевести код из Turbo...

Есть ли аналог модуля tpdate.tpu (Turbo Pascal) для Free Pascal
Внимание! Нужно срочно узнать название юнита для freepascal, который выполняет функции tpdate.tpu для турбопаскаля!!! Помогите!!!

Из множества выбрать три различные точки по условию -из Turbo Pascal во Free Pascal
Даны 2 множества точек на плоскости. Выбрать три различные точки первого множества так, чтобы круг ограниченный окружностью , проходящий...

Список слов распечатать в алфавитном порядке. В Turbo Pascal или Pascal ABC
Дана непустая последовательность слов, в каждом из которых содержится от 1 до 6 заглавных латинских букв; соседние слова разделены запятой,...

Нужно перевести код с Pascal ABC на Turbo Pascal - рисование работающей мельницы
Вот код, он должен рисовать работающею мельницу. uses graphABC,crt; type point=record x,y:integer; end; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
180
Ответ Создать тему
Новые блоги и статьи
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru