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

Поиск:

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


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


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

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



Цитата

у вот с одной стороны с++ позволяет объявлять переменные где и как попало

А как тогда в паскале объявить переменную для блока(типа "где попало")?


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


Амеба
Group Icon


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

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



Цитата(nerezus @  14.12.2007,  08:34 Найти цитируемый пост)
А как тогда в паскале объявить переменную для блока(типа "где попало")?

  Паскаль процедурно ориентирован, значит во вложенной процедуре.


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

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

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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



Цитата

а с другой стороны обязывает нас чётко писать имена переменных!!!!!!!! это минус 


это - несомненный плюс.

Цитата

Цитата(Den64 @  16.11.2007,  02:16 ) 
% круче чем div, | круче чем or, ! круче not, & круче. 

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


бред только для малознакомого с С/C++. Иначе придется объявить бредом всю математическую нотацию, заменив словами "принадлежит", "существует" и т.д.
PM MAIL   Вверх
Alexeis
Дата 14.12.2007, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(baldina @  14.12.2007,  10:40 Найти цитируемый пост)
бред только для малознакомого с С/C++. Иначе придется объявить бредом всю математическую нотацию, заменив словами "принадлежит", "существует" и т.д. 


  Не все так красиво, в математике все однозначно, а тут нет. Тот же оператор деления. В паскале и бейсике операторы целочисленного деления и деления с плавающей точкой различаются, потому при делении 2х переменных/значений всегда тип результата очевиден, чего не скажешь про С/С++.

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


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

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

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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



Недостатки есть в любом языке. Ну, кроме матерного  smile
Так что вопрос только в том, насколько перевешивают достоинства.
Лично мне в С++ больше всего нравятся три вещи:
1. Поддержка нескольких парадигм программирования. Причем хорошая поддержка, а в грядущем стандарте станет еще лучше. 
2. Возможность при необходимости сделать все что угодно (например, наличие reinterpret_cast), но поощрение делать красиво и правильно.
3. Выразительность. Возможность на языке не только писать код, но и проектировать программу - сильная вещь.

Pascal лишен некоторых недостатков С++, но не имеет упомянутых достоинств. имхо.
PM MAIL   Вверх
Daevaorn
Дата 14.12.2007, 12:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 5
Всего: 70



Цитата(Akella @  14.12.2007,  02:21 Найти цитируемый пост)
бред, ибо код в паскале более читабелен!

для детей младшего дошкольного возраста.

Цитата(Akella @  14.12.2007,  02:21 Найти цитируемый пост)
ну вот с одной стороны с++ позволяет объявлять переменные где и как попало (ну может я утрирую), а с другой стороны обязывает нас чётко писать имена переменных!!!!!!!! это минус 

Не где попало, а там где потребовалось. А от нечувствительности к регистру вся соль, от объявления переменных в одном месте, теряется.
PM MAIL WWW   Вверх
archimed7592
Дата 14.12.2007, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

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



Цитата(Akella @  14.12.2007,  01:21 Найти цитируемый пост)
в паскале быстрее ставить точку, нежели эту несуразицу ->

Зато "несуразица" предоставляет намного более широкий диапазон возможностей smile.

Цитата(Akella @  14.12.2007,  01:21 Найти цитируемый пост)
бред, ибо код в паскале более читабелен!

Субъективное мнение. Мне вот читабельней кажется плюсовый код.

Цитата(Akella @  14.12.2007,  01:21 Найти цитируемый пост)
ну вот с одной стороны с++ позволяет объявлять переменные где и как попало (ну может я утрирую), а с другой стороны обязывает нас чётко писать имена переменных!!!!!!!! это минус

Опять же на любителя. Что читабельней: findAll или findall? А ведь паскаль не запрещает написать второй вариант smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Sartorius
Дата 14.12.2007, 18:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



 ИМХО бессмысленно сравнивать процедурный язык, созданный для учебных целей  и промышленный ОО-язык. Стоит м.б. Delphi vs C++ тогда обсуждать.  (или Algol vs C++  smile)
PM MAIL ICQ   Вверх
Alexeis
Дата 14.12.2007, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Sartorius, я об этом уже говорил, тут даже не определено в какой из спецификаций "Pascal", "Pascal with Objects" или "Object Pascal".


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

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

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


^аВаТаР^ сообщение>>
****


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

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



Цитата(Akella @  14.12.2007,  05:21 Найти цитируемый пост)

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

не бред ибо согласно [c++2003: lex.key] и даже [c99: 7.9](но в си только при подключенном iso6446.h  smile ) можно писать and'ы.
ахх, ну и разумеется #define and && можно сделать и в более старых си.  Вот и будет читабельность.
а в паскале с препроцессорами вообще говоря тяжко. 

Мне вот всякие input.readable() and output.writeable() c and'ом тоже читаются легче чем с &&. 

Цитата(baldina @  14.12.2007,  15:24 Найти цитируемый пост)

1. Поддержка нескольких парадигм программирования. Причем хорошая поддержка, а в грядущем стандарте станет еще лучше. 

йап-йап. в паскале нет аналогов шаблонов. только за это его дóлжно мучить пока он ими не обзаведётся{как уже было с перегрузкой операторав} или пока он не умрёт.
[Хотя если достать какой-нибудь макропроцессор{типа m4}, то в принципе можно кода нагенерировать, но это полумера]

Цитата(baldina @  14.12.2007,  15:24 Найти цитируемый пост)

3. Выразительность. Возможность на языке не только писать код, но и проектировать программу - сильная вещь.

а можно этот пункт подробнее?.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
baldina
Дата 16.12.2007, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



Цитата(Mayk @ 16.12.2007,  15:00)
Цитата(baldina @  14.12.2007,  15:24 Найти цитируемый пост)

3. Выразительность. Возможность на языке не только писать код, но и проектировать программу - сильная вещь.

а можно этот пункт подробнее?.

Можно. Язык программирования не может (да и не должен) быть полноценным языком проектирования, но язык может поддерживать напрямую некоторые принципы проектирования.
В отношении С++ это прежде всего поддерживаемые парадигмы. Про это я сказал в п.1, но относительно технических средств. То же верно и в отношении проектных средств: программист может обдумывать задачу с той точки зрения, которая в данный момент приемлема, используя синтаксис С++.

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

ООП:
Код

class Integral {
   virtual double f (double x) = 0; // подынтегральная функция
  public:
    double get_ivalue (double a, double b); // возвращает значение интеграла от a до b
};

class Linear : public Integral {
   double A, B;
   double f (double x) { return A*x + B; }
  public:
   Linear (double a, double b) : A(a), B(b) {}
};

// в общем виде этот алгоритм мы можем знать заранее, а можем и не знать. на интерфейс не влияет
double Integral::get_ivalue (double a, double b)
{
   double S=0;
   double yi_1 = f(a);
   double dx = (b-a)/n;
   for (int i=1; i < n; ++i)
   {
      double yi = f(a+i*dx);
      S += square(yi_1,yi,dx);
      yi_1 = yi;
   }
   return S;
}


Обобщенное программирование:
Код

template <typename Function>
double Integral(double a, double b, Function f) {...} // тот же самый алгоритм. тут нам важно только, что f может использоваться как double f(double)

class Linear {
   double A, B;
  public:
   Linear (double a, double b) : A(a), B(b) {}
   double operator() (double x) { return A*x + B; }
};


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

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

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

И напоследок. С++ не поддерживает напрямую некоторые вещи. Но его легко научить это поддерживать. Посмотрите на boost - он почти целиком из таких расширений состоит. Особенно выразительные примеры - пример Dimension Analisys в MPL и библиотека parameters.
Т.е. для конкретной задачи мы можем создавать инструменты, используя которые приобретаем новые семантические средства, синтаксически оставаясь в языке.

Немного сумбурно получилось. Если што непонятно готов развить.  smile 
PM MAIL   Вверх
archimed7592
Дата 16.12.2007, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

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



baldina, непонятно только одно: какой из языков ты считаешь невыразительным - С++ или Паскаль? smile


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
baldina
Дата 16.12.2007, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



Я не говорил, что Pascal невыразителен (хотя чистый паскаль стоит сравнивать с С а не С++).
Я говорил за что мне нравится С++

Добавлено через 2 минуты и 12 секунд
Религиозные войны вообще дело такое... Тонкое, как и восток. Остроконечники и тупоконечники.
Цитата

- Василий Иванович, как вы относитесь к гомосексуалистам?
- Не отношусь.

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


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

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



Спасибо, теперь понятно smile.
Полностью с тобой согласен - С++ очень выразительный язык.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Akella
Дата 17.12.2007, 04:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(archimed7592 @  14.12.2007,  18:33 Найти цитируемый пост)
Опять же на любителя. Что читабельней: findAll или findall? 

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

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

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


 




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


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

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