Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Pascal sv C++ 
:(
    Опции темы
Alexeis
Дата 15.10.2007, 10:00 (ссылка) |    (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



  Это кто там не знает что String без параметров в Turbo Pascal займет 256 байт, а с параметрами займет столько байт сколько установят?
Причем строка не может занимать больше 255 символов. Если не согласны так хоть поясните с чем. Конечно можно извратиться и работать с указателями, но это неудобно. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Den64
Дата 16.11.2007, 02:16 (ссылка)    | (голосов:7) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 6.4.2006
Где: Курск

Репутация: нет
Всего: 2



Цитата(MrCherry @ 15.10.2007,  09:41)
ни один человек, который разбирается в с++ никогда не вернётся к паскалю.


Раньше я програмил тока на Паскале, я его неплохо знаю.

Потом я изучил си. Мне он кажется намного логичнее и проще!

В Паскале процедуры лишняя констроукция в си и без неё ниплохо.
{} - быстрей писать.
В си нинужно писать then.
В Паскале строгая типизация - это минус для меня.
В си нет тупова булевого типа!
% круче чем div, | круче чем or, ! круче not, & круче.
for в си намного ближе к низкому уровню и функциональнее
В си больше простых типов данных..
Объявлять переменные можно в любом месте, там же и инициализовывать..
В си есть модификаторы.

Единственное что в Паскале мне больше нравица это что там . заменяет . -> ::

А вопще мне асм больше всего нравица!!!



Это сообщение отредактировал(а) Den64 - 16.11.2007, 02:19
--------------------
Инагда пишу звуками.
PM WWW ICQ   Вверх
nerezus
Дата 16.11.2007, 06:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

В Паскале строгая типизация - это минус для меня.
 В с++ тоже.

Цитата

В си нет тупова булевого типа!
 В С++ есть.

Не будешь же ты писать прикладнуху на С?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Lazin
Дата 16.11.2007, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



В паскале нет шаблонов(может в Delphi добавили?), там возможно только процедурное программирование и объектно ориентированное(с ограничениями), на си++ можно писать к примеру в функциональном стиле (если есть желание), возможно обобщенное программирование и т.д.
Если в паскале нет к примеру сборки мусора, то с этим ничего не поделаешь, в программе на с++ можно при желании использовать сборку мусора, можно использовать подсчет ссылок на объекты, и тд, ограничений никаких нет.
PM MAIL Skype GTalk   Вверх
esperant0
Дата 16.11.2007, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: нет
Всего: 14



Цитата(NEW_M_A_N @ 7.10.2007,  20:56)
В принципе не слушай ни кого! Пользуйся тем языком, который лучше знаешь. Ну а вообще посоветую лучше C++. Не потому что им чаще пользуются, а потому что там можно грамотно распряжаться памятью не резервирую место под символы, которых в строке вообще не будет, в отличии от Pascal.

Прикольно, вы в начале призываете никого не слушать, а потом даете совет.


Так вас ведь то же не надо слушать. Согласно вашему совету. А значит не надо слушать что не надо никого не слушать, А значит всех надо слушать. Тогда придется и вас послушать. А вы говорите никого не слушать.


Вобщем вы сказанули противоречивую сентенцию. Противоречия как и тавтологии смысла не несут

Добавлено через 1 минуту и 12 секунд
Возможности одинаковы в обоих языках. Иба оба языка эквивалентны машине тьюринга. Это исчерпывающий ответ на ваш вопрос.

Добавлено через 6 минут и 14 секунд
Цитата(MrCherry @ 15.10.2007,  09:41)
чем больше в универе долбят поганый паскаль - тем больше я его ненавижу.
ни один человек, который разбирается в с++ никогда не вернётся к паскалю.

чушь.


Колбасов после С++ вернулся к паскалю. Творожников вернулся. А вы говорите не один.




--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
MAKCim
Дата 16.11.2007, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Den64 @  16.11.2007,  02:16 Найти цитируемый пост)
В Паскале процедуры лишняя констроукция в си и без неё ниплохо.

согласен
Цитата(Den64 @  16.11.2007,  02:16 Найти цитируемый пост)
{} - быстрей писать.

не аргумент
Цитата(Den64 @  16.11.2007,  02:16 Найти цитируемый пост)
В си нинужно писать then.

не аргумент
Цитата(Den64 @  16.11.2007,  02:16 Найти цитируемый пост)
В Паскале строгая типизация - это минус для меня.

субъективно
этот критерий не может дать оюъективный ответ, какой язык лучше/хуже
в разных ситуациях по-разному
Цитата(Den64 @  16.11.2007,  02:16 Найти цитируемый пост)
% круче чем div, | круче чем or, ! круче not, & круче.

детский сад
Цитата(Den64 @  16.11.2007,  02:16 Найти цитируемый пост)
for в си намного ближе к низкому уровню и функциональнее

функциональнее да
не понял только причем здесь низкий уровень
Цитата(Den64 @  16.11.2007,  02:16 Найти цитируемый пост)
В си больше простых типов данных..

char, short, int, long, float, double
в Pascal?
Цитата(Den64 @  16.11.2007,  02:16 Найти цитируемый пост)
Объявлять переменные можно в любом месте, там же и инициализовывать..

согласен
только копилятор обычно все равно выделяет место под стековый фрейм для хранения всех локальных переменных (с целью оптимизации)



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Lazin
Дата 16.11.2007, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(MAKCim @  16.11.2007,  09:55 Найти цитируемый пост)
Цитата(Den64 @  16.11.2007,  02:16 Найти цитируемый пост)
Объявлять переменные можно в любом месте, там же и инициализовывать..

согласен
только копилятор обычно все равно выделяет место под стековый фрейм для хранения всех локальных переменных (с целью оптимизации)

Но в С++ компилятор вызовет конструктор именно там, где объявлена локальная переменная, а не при входе в функцию. Благодаря этому в программах на с++ можно использовать идиому raii.
PM MAIL Skype GTalk   Вверх
Alexeis
Дата 16.11.2007, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(MAKCim @  16.11.2007,  09:55 Найти цитируемый пост)
char, short, int, long, float, double


Однобайтовые
char, 
byte, 
Shortint
Boolean  

Двубайтовые
word, 
SmallInt
Integer (зависит от процессора)

четырех байтовые
Longword
Longint
Pointer (Зависит от процессора)

8 ми байтовые
Int64

С плавающей точкой
Single - 4 байта
Real   - 6-8 байт
Double - 8 байт
Comp   - 8 байт (целое длинное считается сопроцессором )
Currency - 8 байт (4 фиксированных знака после запятой)
Extended  - 10 байт

Файлы

множества
set of <> 1-32 байта

Перечисляемый тип

Строка

Массив
-----------------------------
В паскале действительно Файлы, строки, массивы, множества являются фундаментальными типами. Сомнительно, что в Си больше встроенных типов. 

Цитата(MAKCim @  16.11.2007,  09:55 Найти цитируемый пост)
согласен
только копилятор обычно все равно выделяет место под стековый фрейм для хранения всех локальных переменных (с целью оптимизации)


В Си введена концепция блоков, в паскале ей противопоставляется концепция вложенных функций. Т.е. переменные вложенных функций не видны во вне. И не всегда хаотически разбросанные переменные это плюс. Я несколько раз имел с этим проблемы, когда копировал блоки кода, возникала путаница со счетчиками цикла.

Из серьезных плюсов. 
Гибкая работа с указателями.
Макросы (в С это действительно нужная штука)
Гибкая работа с CRT
Прозрачный механизм работы переменными объявленные как static
Прозрачный механизм ввода/вывода в стандартные потоки

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

Приемущества паскаля
  В pascal е этому противопоставляется ясная и последовательная схема приоритета видимости переменных при возникновении конфликтов имен и доступа к переменным с меньшим приоритетом. 
  Строковые операторы работающие над типами строк (строка ведь встроенный тип как Integer).
  В конце, концов объекты. Стандарт Pascal был в последних версиях определен как Pascal with Objects. (не путать с Object Pascal). Простейшие объекты были уже тогда. Пусть у них не было механизма виртуальных методов, но уже были секции public/Private т.е. инкапсуляция + механизм наследования. Некоторые успели поработать даже с объектной Turbo Vision. 

  



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MAKCim
Дата 16.11.2007, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Lazin @  16.11.2007,  10:18 Найти цитируемый пост)
Но в С++ компилятор вызовет конструктор именно там, где объявлена локальная переменная, а не при входе в функцию. Благодаря этому в программах на с++ можно использовать идиому raii.

пожалуйста, пусть вызывает  smile 
одно другому не мешает, да я и не говорил про конструкторы  smile 
Цитата(Alexeis @  16.11.2007,  10:50 Найти цитируемый пост)
В Си введена концепция блоков, в паскале ей противопоставляется концепция вложенных функций. Т.е. переменные вложенных функций не видны во вне. И не всегда хаотически разбросанные переменные это плюс. Я несколько раз имел с этим проблемы, когда копировал блоки кода, возникала путаница со счетчиками цикла.

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

Добавлено через 10 минут и 28 секунд
Цитата(Alexeis @  16.11.2007,  10:50 Найти цитируемый пост)
При этом не полностью соблюдается инкапсуляция модулей как программных единиц, так как весь код попадает в один сегмент при компиляции.

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

Это сообщение отредактировал(а) MAKCim - 16.11.2007, 12:45


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
zkv
Дата 16.11.2007, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 92



Цитата(Alexeis @  16.11.2007,  10:50 Найти цитируемый пост)
 Отделенный хедер от реализации, при этом сложнее навигация, компиляция, вынужденные директивы для исключения повторного включения реализаций. 

по мне так гораздо удобней (хедеры отдельно) в большинстве случаев мне нафиг не надо заглядывать в реализацию
Цитата(Alexeis @  16.11.2007,  10:50 Найти цитируемый пост)
так как весь код попадает в один сегмент при компиляции.

в смысле весь код? 
компилятор проходит по каждой единице трансляции отдельно.
Цитата(Alexeis @  16.11.2007,  10:50 Найти цитируемый пост)
Правда можно использовать namespace, но это усложняет вызов и усложняет обращение к глобальным переменным модулей.

чем усложняет?

Это сообщение отредактировал(а) zkv - 16.11.2007, 13:11
PM MAIL   Вверх
Alexeis
Дата 16.11.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(MAKCim @  16.11.2007,  12:45 Найти цитируемый пост)
если говорить об ELF - формате, то там для каждого исполняемого файла или разделяемой библиотеки существует лишь один програмный сегмент кода, который отображается компоновщиком (ядра или пользовательского уровня) на адресное пространство процесса
секций может быть много, но все они расположены в пределах одного програмного сегмента последовательно друг за другом (возможно, с выравниванием)
я не вижу смысла во множестве програмных сегментов кода
зачем для кода каждого из модулей создавать отдельный сегмент?
какие проблемы это может решить?

  
  Это уже детали реализации языка конкретным компилятором, к самому языку это не относиться. Я подразумевал именно логическое структурирование модулей. Расположение модулей в экзешнике не регламентируется стандартом. 


Цитата(MAKCim @  16.11.2007,  12:45 Найти цитируемый пост)
если уж говорить об удобстве, то объективно, принцип определения переменных в любом месте кода, удобнее
кроме того, в С никто не запрещает определять переменные до начала, собственно, кода
в Pascal - жесткое ограничение
так что по всем параметрам, Pascal тут в минусе

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


После небольшой практики хочеться добавить регистрозависимость имен в плюс. Но не потому что возможно объявления типа
HWND hwnd; 
Я считаю создание переменных отличающихся регистром неправильным. Важно, то что это заставляет строже относиться к именам и не писать их как угодно. Например в паскале можно написать Hwnd1 или hWnd1, а это путает.

Добавлено через 8 минут и 25 секунд
Цитата(zkv @  16.11.2007,  13:10 Найти цитируемый пост)
по мне так гораздо удобней (хедеры отдельно) в большинстве случаев мне нафиг не надо заглядывать в реализацию

  
у pas модулей реализация просто ниже и отделена в специальную секцию, так что это совсем не мешает просматривать описания 

Цитата(zkv @  16.11.2007,  13:10 Найти цитируемый пост)
в смысле весь код? 
компилятор проходит по каждой единице трансляции отдельно.


Че делает компилятор мне не интересно, это уже особенность реализации, важно что он рассматривает все модули как единое пространство.

Цитата(zkv @  16.11.2007,  13:10 Найти цитируемый пост)
чем усложняет?

Необходимостью каждый раз писать префикс. использование using namespace я не рассматриваю так как это сводит на нет все его приемущества в данном модуле.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MAKCim
Дата 16.11.2007, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Alexeis @  16.11.2007,  13:44 Найти цитируемый пост)
Че делает компилятор мне не интересно, это уже особенность реализации, важно что он рассматривает все модули как единое пространство.

а как еще рассматривать?
как тогда компоновать объектные файлы?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Alexeis
Дата 16.11.2007, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(MAKCim @  16.11.2007,  22:28 Найти цитируемый пост)
а как еще рассматривать?
как тогда компоновать объектные файлы? 

  Ну например, ставить в соответствие каждому заголовочному файлу свой модуль реализации. Компилировать его так, чтобы он был самодостаточным и лишь линкер подставлял адреса функций/переменных из внешних модулей. А то ведь описать класс можно в одном заголовочном файле, а реализовать в cpp шнике с другим именем или вообще в нескольких. Т.е. модульность лишь призрачная. Меня по началу удивляло, чего это он не хочет компилить *.h файл smile , а он просто по стандарту не знает где найдет реализацию.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MAKCim
Дата 16.11.2007, 22:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Alexeis @  16.11.2007,  22:43 Найти цитируемый пост)
Компилировать его так, чтобы он был самодостаточным и лишь линкер подставлял адреса функций/переменных из внешних модуле

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

Добавлено через 1 минуту и 46 секунд
Цитата(Alexeis @  16.11.2007,  22:43 Найти цитируемый пост)
А то ведь описать класс можно в одном заголовочном файле, а реализовать в cpp шнике с другим именем или вообще в нескольких

кто мешает (так же как и переменные в С) реализовать методы в нужном *.cpp файле?  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Akella
Дата 14.12.2007, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



Цитата(Den64 @  16.11.2007,  02:16 Найти цитируемый пост)
{} - быстрей писать.

в паскале быстрее ставить точку, нежели эту несуразицу ->

Добавлено через 1 минуту и 4 секунды
Цитата(Den64 @  16.11.2007,  02:16 Найти цитируемый пост)
% круче чем div, | круче чем or, ! круче not, & круче.

бред, ибо код в паскале более читабелен!

Добавлено через 2 минуты и 1 секунду
Цитата(Den64 @  16.11.2007,  02:16 Найти цитируемый пост)

А вопще мне асм больше всего нравица!!!

ага, особенно для баз данных  smile

Добавлено через 8 минут и 35 секунд
Цитата(Alexeis @  16.11.2007,  13:44 Найти цитируемый пост)
Например в паскале можно написать Hwnd1 или hWnd1, а это путает.

ну вот с одной стороны с++ позволяет объявлять переменные где и как попало (ну может я утрирую), а с другой стороны обязывает нас чётко писать имена переменных!!!!!!!! это минус
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1184 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.