Re[8]: почему я предпочёл паскалю си
От: AndrewJD США  
Дата: 06.01.05 17:26
Оценка:
Здравствуйте, Algorithmus, Вы писали:

A>Ладно, будем завязывать... Каждый выбирает себе инструмент в зависимости от задач и личных предпочтений... Как я и говорил, Delphi я тоже юзаю и очень часто. Но только для интерфейсных приложений, которые не содержат сложной логики.


Ага, пора.

AJD>Структура с вариантами == union в сях


A>Интересно, интересно... Будем смотреть... Пока не верю

Проверь
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[6]: почему я предпочёл паскалю си
От: yxiie Украина www.enkord.com
Дата: 06.01.05 20:26
Оценка:
Здравствуйте, ssm, Вы писали:

ssm>Здравствуйте, yxiie, Вы писали:


Y>>шаблоны как раз есть.


ssm>То что там есть, находится на таком уровне развития, что


ну это уже такое дело...
... << RSDN@Home 1.1.3 stable >>
Re: почему я предпочёл паскалю си
От: Larev  
Дата: 07.01.05 00:45
Оценка: +1 -1
Здравствуйте, DEMON HOOD, Вы писали:

DH>Чегото вспомнилось сегодня, решил запостить...


DH>Начинал программировать на паскале, причина тривиальная — в наличии был только компилятор паскаля. IDE Borland Pascal

DH>потом появилась у меня IDE Borland C. И там и там были жёлтые буквы на синем фоне да и паскаль от си не сильно отличается,
DH>но единственная фича которая перевесила в пользу си — это возможность обьявлять переменные в произвольном месте , а не где-то там, в блоке var.

Это конечно супер, но злоупотреблять этим не стоит. Иной раз хорошо объявить переменную внутри блока, но чрезмерный разброс объявлений переменных затрудняет чтение кода, да и это не очень хороший тон. Желательно объявления переменных группировать "кучками" в логически правильных местах.
Re[6]: почему я предпочёл паскалю си
От: rockandroll Казахстан  
Дата: 07.01.05 08:37
Оценка:
Здравствуйте, Algorithmus, Вы писали:

A>В понимании С объединение — структура, у которой все члены начинаются с одного и того же адреса памяти. Таким образом можно, напрмер, совместить массив char и double.

A>После чего записав в член типа double вещественное число, из массива его можно побайтово прочитать.
A>А то, что привел ты — это структура с вариантами (не помню, как она "по научному" назывется).

Давно на паскале не писал, так что могу ошибаться:

var d:double;
var a:array [0..7] of byte absolute d;
... << RSDN@Home 1.1.4 >>
Re[3]: почему я предпочёл паскалю си
От: yxiie Украина www.enkord.com
Дата: 07.01.05 09:47
Оценка:
Здравствуйте, pavel_turbin, Вы писали:

A>>6. Нет некоторых полезных операторов (тернарный, например)

_>в Perl-e столько прикольных операторов, но мрак все равно полный.

перл рулит , ну что тут можно еще сказать
... << RSDN@Home 1.1.3 stable >>
Re[2]: почему я предпочёл паскалю си
От: DEMON HOOD  
Дата: 07.01.05 16:25
Оценка:
Здравствуйте, Larev, Вы писали:

L>Это конечно супер, но злоупотреблять этим не стоит.

for (int x=0;x<3;x++){}
... <<silent Rsdn@Home 1.1.4 beta 1 Windows XP 5.1.2600.0 >>
Re[2]: почему я предпочёл паскалю си
От: moudrick Россия http://community.moudrick.net/
Дата: 07.01.05 18:47
Оценка: :)
Здравствуйте, ScorpZ, Вы писали:

SZ>А как вам такая фича в сях , на мой взгляд одно из главных достоинств — как переопределение функция ?


Что это такое? Объявление в разных файлах разных функций с одним именем?
Если да, то у меня ой как есть что сказать по этому поводу.
Re[2]: почему я предпочёл паскалю си
От: Eugene Kilachkoff Россия  
Дата: 07.01.05 18:55
Оценка:
Здравствуйте, slegkapjan, Вы писали:
DH>>потом появилась у меня IDE Borland C. И там и там были жёлтые буквы на синем фоне да и паскаль от си не сильно отличается,
S>Borland C++ 3.1 -- это же классика!! Я до сих пор держу его и на работе и дома, просто чтоб был. Эх! Желтые буквы на синем фоне. Господа, я щас прослезюсь. Эхх!
Возьми rhide/djgpp. Ну или emacs покрась
... << RSDN@Home 1.1.3 stable >>
Re: почему я предпочёл паскалю си
От: Astaroth Россия  
Дата: 07.01.05 18:59
Оценка: +1 -1
Здравствуйте, DEMON HOOD, Вы писали:

DH>но единственная фича которая перевесила в пользу си — это возможность обьявлять переменные в произвольном месте , а не где-то там, в блоке var.


Нету в С такой возможности. Она в С++ есть.
А тем, кто путает С и С++ — руки отрывать.
WinAmp играет: (умолк пока)
http://livejournal.com/users/breqwas
Re[3]: почему я предпочёл паскалю си
От: Astaroth Россия  
Дата: 07.01.05 19:00
Оценка: 2 (2)
Здравствуйте, Dr.Gigabit, Вы писали:

DG>По-моему, по последнему стандарту С99 можно.


Можно в начале блока, а не в любом месте.
WinAmp играет: (умолк пока)
http://livejournal.com/users/breqwas
Re[2]: почему я предпочёл паскалю си
От: DJ KARIES Россия  
Дата: 10.01.05 16:32
Оценка: :)
Здравствуйте, Astaroth, Вы писали:

A>Нету в С такой возможности. Она в С++ есть.

A>А тем, кто путает С и С++ — руки отрывать.
А тем кто паскаля с дельфями путает, не только руки...
... << http://dkdens.narod.ru :: http://retroforth.org >>
Re: почему я предпочёл паскалю си
От: GlebZ Россия  
Дата: 10.01.05 17:42
Оценка:
Здравствуйте, DEMON HOOD, Вы писали:

DH>Чегото вспомнилось сегодня, решил запостить...


DH>Начинал программировать на паскале, причина тривиальная — в наличии был только компилятор паскаля. IDE Borland Pascal

DH>потом появилась у меня IDE Borland C. И там и там были жёлтые буквы на синем фоне да и паскаль от си не сильно отличается,
DH>но единственная фича которая перевесила в пользу си — это возможность обьявлять переменные в произвольном месте , а не где-то там, в блоке var.
Нету там такой фичи.
В свое время, я думал перейти с турбо-паскаля на си. Начал сравнивать. В результате оказалось, что Турбо-Паскаль является С с синтаксисом Паскаля. По функциональности, он более родственен С чем родному Паскалю. Разница была только в синтаксисе.
Потом, когда начал переходить на ООП, сравнил функциональность С++ и Паскаля. Небо и земля. Это определило выбор. После начала работы с Windows, к паскалю не возвращался. До тех пор, пока не начал плодить программки на Delphi. Но С++ к тому времени уже стал действительно моим родным языком. Если можно выполнить работу на С++, долго не думаю. А С# уже порядком поднаедает.

С уважением, Gleb.
Re[3]: почему я предпочёл паскалю си
От: GlebZ Россия  
Дата: 10.01.05 17:45
Оценка: 4 (2)
Здравствуйте, DEMON HOOD, Вы писали:

DH>Здравствуйте, Larev, Вы писали:


L>>Это конечно супер, но злоупотреблять этим не стоит.

DH>
DH>for (int x=0;x<3;x++){}
DH>

Еще не надо забывать, что это время жизни объекта. Что есть вери гуд. И чего нет в пасквиле.

С уважением, Gleb.
Re[5]: почему я предпочёл паскалю си
От: Шахтер Интернет  
Дата: 11.01.05 01:30
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Здравствуйте, ssm, Вы писали:


ssm>>а че там вообще проверить то можно? ни шаблонов, ни исключений...


P>Что-то подсказывает мне, что в программе, кроме шаблонов и исключений, есть еще кое-что.


P>И потом, путь от идеи до реализации довольно долгий. Иногда быстрой прикидки "на коленке" бывает достаточно, чтобы убедиться в правильности /ошибочности выбранного направления.


P>Кстати, в 3.1 шаблоны как раз и появились. Говорят, они были еще в 3.0, но прошла эта версия мимо.


Были.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[6]: почему я предпочёл паскалю си
От: Шахтер Интернет  
Дата: 11.01.05 01:30
Оценка:
Здравствуйте, ssm, Вы писали:

ssm>Здравствуйте, Privalov, Вы писали:



P>>Что-то подсказывает мне, что в программе, кроме шаблонов и исключений, есть еще кое-что.


ssm>в современном C++


P>>И потом, путь от идеи до реализации довольно долгий. Иногда быстрой прикидки "на коленке" бывает достаточно, чтобы убедиться в правильности /ошибочности выбранного направления.


P>>Кстати, в 3.1 шаблоны как раз и появились. Говорят, они были еще в 3.0, но прошла эта версия мимо.


ssm>знаешь, давай не будем грешить, и называть, то что было в 3.1 шаблонами


Шаблоны, шаблоны. Без дураков. Ты, кстати, вспомни, в каком году вышел BC++ 3.0, в каком был принят ныне действующий стандарт, а в каком был сделан первый компилятор, реализующий частичную специализацию шаблонов.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re: почему я предпочёл паскалю си
От: F1aSh  
Дата: 11.01.05 15:02
Оценка:
А мне нравится то что в С++ все всегда "под рукой". А также то что разработчики уже написали львиную долю самых нужных функций самыми наилучшими и быстрыми способами. Программы работают быстрей и велосипед не нада изобретать. Нафига мне кусок кода для поиска какойго либо вхождения придумывать, если есть функция find — нада тока посмотреть в какой библиотеке ее прототип находится...

Срр решает!
Re: А знаете ли Вы что...
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 11.01.05 15:27
Оценка: -1
Современной версией языка Pascal (1970 год) является язык Component Pascal (1997 год)





Отличия Компонентного Паскаля от Паскаля

Исключенные средства
• Типы-диапазоны

Используйте один из стандартных целых типов.

• Перечислительные типы

Используйте вместо них целые константы.

• Произвольные диапазоны для массивов

Массивы теперь всегда определены над целым диапазоном 0..max-1.

Пример

A = ARRAY 16 OF INTEGER (* разрешены индексы из диапазона 0..15 *)

• Нет общих множеств

Тип SET теперь означает набор целых чисел, который может включать элементы 0..31.

• Нет явного оператора DISPOSE

Неиспользуемая более память автоматически собирается сборщиком мусора. Вместо DISPOSE, просто присвойте переменной значение NIL.

• Нет вариантных записей

Используйте (расширенное) переопределение записей.

• Нет упакованных структур

Используйте типы SHORTCHAR или BYTE для значений, умещающихся в байт.

• Нет GOTO

• Нет стандартных функций PRED и SUCC

Используйте DEC и INC для целых значений.

• Нет встроенных средств ввода/вывода

Нет файловых типов. Ввод/вывод обеспечивается библиотечными процедурами.

Измененные средства
• Стандартная процедура ENTIER вместо ROUND

• Синтаксис для констант типа REAL

3.0E+4, но не 3.0e+4

• Синтаксис для объявлений указательных типов

P = POINTER TO R
вместо
P = ^R

• Синтаксис для оператора CASE

"|" вместо ";" в качестве разделителя случаев.
Предложение ELSE.

Пример

CASE i * 3 — 1 OF
0: StdLog.String("нуль")
| 1..9: StdLog.String("от единицы до девяти")
| 10, 20: StdLog.String("десять или двадцать")
ELSE StdLog.String("что-то еще")
END

• Имя процедуры должно быть повторено

Пример

PROCEDURE DrawDot (x, y: INTEGER);
BEGIN
END DrawDot;

• Большие и малые буквы различаются

Пример: "proc" не то же самое, что "Proc".

• Синтаксис литерных цепочек

Литерные цепочки-константы заключаются между парой " или между парой '. У одной цепочки не может быть одновременно одиночных и двойных кавычек. Литерные цепочки-константы единичной длины могут присваиваться литерным (character) переменным.

Пример

"That's great" 'Вывести "общий привет" на экран'

ch := "x"

ch := 'x'

• Комментарии

Комментарии заключаются между (* и *) и могут быть вложены.

• Скобки для множеств

Константы-множества задаются между { и } вместо [ и ].

Пример {0..2, 4, j..2 * k}

• Синтаксис функций

Используйте ключевое слово PROCEDURE также и для функций вместо FUNCTION.

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

Результат функции возвращается явно оператором RETURN вместо присваивания имени функции.

Пример

PROCEDURE Fun (): INTEGER;
BEGIN
RETURN 5
END Fun;

вместо

FUNCTION Fun: INTEGER;
BEGIN
Fun := 5
END;

n := Fun() вместо n := Fun

• Объявления

Последовательность объявлений теперь

{ ConstDecl | TypeDecl | VarDecl} {ProcDecl | ForwardDecl}

вместо

[ConstDecl] [TypeDecl] [VarDecl] {ProcDecl}.

Упреждающие (Forward) объявления необходимы, если процедура используется до ее определения.

Пример

PROCEDURE ^ Proc;

вместо

PROCEDURE Proc; FORWARD;

• Процедурные типы

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

Пример

TYPE P = PROCEDURE (x, y: INTEGER);

VAR v: P;

v := DrawDot; (* присваивание *)

v(3, 5); (* вызов DrawDot(3, 5) *)

• Явные END вместо составных операторов

BEGIN может появляться только перед последовательностью операторов, но не внутри ее. IF, WHILE, и LOOP всегда заканчиваются ключевым словом END.

• Оператор WITH

Оператор WITH является локальной охраной типа, он не подразумевает наличие скрытой переменной и не открывает новый диапазон видимости для переменных.

См. детали в описании языка.

• ELSIF

Операторы IF могут иметь несколько ветвей.

Пример

IF name = "top" THEN
StdLog.Int(0)
ELSIF name = "bottom" THEN
StdLog.Int(1)
ELSIF name = " charm" THEN
StdLog.Int(2)
ELSIF name = "beauty" THEN
StdLog.Int(3)
ELSE
StdLog.String("strange")
END

• BY вместо только DOWNTO в FOR

Циклы FOR могут использовать любое константное значение в качестве приращения (положительного или отрицательного).

Пример

FOR i := 15 TO 0 BY -1 DO StdLog.Int(i, 0) END

• Булевы выражения используют "сокращенное" вычисление

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

Пример

Следующее выражение не вызывает ошибки при выполнении, когда p = NIL:

IF (p # NIL) & (p.name = "quark") THEN

• Константные выражения

В объявлениях констант допустимы не только буквальные константы, но и константные выражения.

Пример

CONST
zero = ORD("0");
one = zero + 1;

• Разные операции

# используется вместо <> для проверки на неравенство.

& используется вместо AND для логической конъюнкции.

~ используется вместо NOT для логического отрицания.

• Явное преобразование к меньшему типу с помощью SHORT

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

Пример

int := shortint;

shortint := SHORT(int)

Новые средства
• Шестнадцатеричные числа и литеры

Пример

100H (* десятичное 256 *)

0DX (* возврат каретки *)

• Дополнительные числовые типы

Добавлены типы LONGINT, SHORTINT, BYTE, SHORTREAL.

• Симметрическая разность множеств

Множества могут вычитаться.

• Новые стандартные процедуры

Добавлены новые стандартные процедуры INC, DEC, INCL, EXCL, SIZE, ASH, HALT, ASSERT, LEN, LSH, MAX, MIN, BITS, CAP, ENTIER, LONG и SHORT.

• LOOP с EXIT

Имеется новый оператор цикла с явным операторов выхода. См. детали в сообщении о языке.

• ARRAY OF CHAR могут сравниваться

Литертные массивы могут сравниваться с помощью операций =, #, <, >, <= и >=.

• Открытые массивы, многомерные массивы

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

Пример

VAR a: POINTER TO ARRAY OF CHAR;

NEW(a, 16)

PROCEDURE ScalarProduct (a, b: ARRAY OF REAL; VAR c: ARRAY OF REAL);

TYPE Matrix = ARRAY OF ARRAY OF REAL;

PROCEDURE VectorProduct (a, b: ARRAY OF REAL; VAR c: Matrix);

• Разыменование указателей не обязательно

Операция разыменования ^ может быть опущена.

Пример

root.next.value := 5

вместо

root^.next^.value := 5

• Модули

Модули суть единицы компиляции, упрятывания информации, а также загрузки. Упрятывание информации — одна из главных черт объектно-ориентированного программирования. Возможны разные уровни упрятывания информации: полное упрятывание, экспорт только для чтения/реализации, полный экспорт.

См. детали в сообщении о языке.

• Расширенное переопределение типов

Типы записей (указательные типы) могут переопределяться, обеспечивая таким образом полиморфизм. Полиморфизм — одно из главных средств объектно-ориентированного программирования.

• Методы

Процедуры могут быть связаны с типами записей (указательными типами), таким образом обеспечивая позднее связывание. Позднее связывание является одним из главных средств объектно-ориентированного программирования. Такие процедуры еще называются методами.

• Операция с цепочками

Литерная цепочка, содержащаяся в литерном массиве, может быть выбрана посредством селектора $.

• Атрибуты записей

По умолчанию записи не могут быть переопределены (are non-extensible), но могут помечены как EXTENSIBLE, ABSTRACT или LIMITED.

• Атрибуты методов

Методы не могут быть переопределены по умолчанию, но могут быть помечены как EXTENSIBLE, ABSTRACT или EMTPY. Вновь вводимые методы должны быть помечены как NEW.

Источник:

http://www.inr.ac.ru/~info21/cpascal/otliqija_cp_ot_pascal.htm
Re[2]: А знаете ли Вы что...
От: iGorash Россия http://therebel.no-ip.org
Дата: 11.01.05 16:30
Оценка: -1
> Современной версией языка Pascal (1970 год) является язык Component Pascal (1997 год)
>
> Отличия Компонентного Паскаля от Паскаля
> [skipped]

ИМХО, какую-то лажу сделали.
Все более или менее полезные и хорошие мелочи, котрых не хватает в С/С++ убрали.
Posted via RSDN NNTP Server 1.9
Re[2]: А знаете ли Вы что...
От: Кодёнок  
Дата: 12.01.05 06:12
Оценка:
СГ>Современной версией языка Pascal (1970 год) является язык Component Pascal (1997 год)

Получилось черт знает что. Увы Лучше бы добавили шаблоны, удалили interface/implementation, и forward — и язык бы преобразился.
Re[2]: почему я предпочёл паскалю си
От: DJ KARIES Россия  
Дата: 12.01.05 07:59
Оценка: 2 (1) -1 :))) :)
Здравствуйте, F1aSh, Вы писали:

FS>А мне нравится то что в С++ все всегда "под рукой". А также то что разработчики уже написали львиную долю самых нужных функций самыми наилучшими и быстрыми способами. Программы работают быстрей и велосипед не нада изобретать. Нафига мне кусок кода для поиска какойго либо вхождения придумывать, если есть функция find — нада тока посмотреть в какой библиотеке ее прототип находится...


FS>Срр решает!


Вот.
А то, блин, хают дельфистов, типа "без нужного компонента программу не решишь".
Так шо вот очередной такой "Кнопкокидатель"!

Мы ведь, настоящие ( ) прогрммеры сами всё писать любим.
Всё, от функции поиска синуса до цикла сообщений отрисовки _стандартных_ виндовых контролов.
Пусть глючно повторим уже написанное до нас, но в этом наша сила!
На платят за то, чтобы писать много собственнонаписанного неотлаженного кода. Чем больше строчик напишем, тем больше наши яйца.
А какой кайф это всё ещё и отЛаживать в отладчике. Это вам не отлаженные контролы кидать на формочки и не отлаженные стандартные функции вызывать. Ведь крутее самописной неотлаженной лажи быть не может!
... << http://dkdens.narod.ru :: http://retroforth.org >>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.