Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Что хорошего в паскале 08.11.02 16:00
Автор: amirul <Serge> Статус: The Elderman
|
Я не хочу начинать религиозную войну. Но такая вот история.
Порядок изучения языков у меня следующий: Basic - Z80 asm - C/C++ - Pascal - т.д.
Таким образом паскаль я узнал уже после це и МНЕ он кажется менее приспособленным для системного программирования (для обучения - вполне может быть). Хочу подчеркнуть, что я не навязываю СВОЮ точку зрения (т.к. не раз был свидетелем грандиозных флеймов типа C vs Pascal, Linux vs BSD...). Просто хочу получить конкретные ответы, есть ли люди которые узнали C раньше Pascal-я и при этом выбрали последний.
Если есть, то за что?
Людей, которые познали творение Вирта раньше Кернигановского сотоварищи, я могу понять даже без каких-либо аргументов: например, до сих пор регулярно юзаю эмуль Спекки и мне даже нравится.
Спасибо за внимание ;-)
|
|
Что хорошего в паскале 08.11.02 17:04
Автор: dl <Dmitry Leonov> Отредактировано 08.11.02 17:05 Количество правок: 1
|
Классический виртовский паскаль отлично приспособлен для обучения принципам структурного подхода и с большим скрипом пригоден для написания прикладных программ. Более-менее рабочим языком он стал после соответствующего приложения напильника - как, например, в случае Борландовских реализаций. Дальше все - практически дело вкуса. Паскалевское ООП в опять же борландовской реализации, на мой взгляд, прикручено на белую нитку.
P.S. Полноценное обучение программированию я начинал как раз с Паскаля (всякие игрушечные васики и счетные программы на фортране не в счет).
|
| |
Я вот, к сожалению, не видел других реализаций ООП, кроме паскалёвого. Можно поподробнее про белые нитки? 09.11.02 00:19
Автор: HandleX <Александр М.> Статус: The Elderman
|
|
| | |
попробую... 09.11.02 02:07
Автор: dl <Dmitry Leonov> Отредактировано 09.11.02 02:11 Количество правок: 1
|
Естественно, базовые возможности ООП тут в наличии. Инкапсуляция - наследование - полиморфизм, это святое. Теперь о нитках.
Переменные объявляются только в начале функции. В сочетании с необходимостью конструирования объекта в произвольном месте привело к тому, что объекты приходится конструировать только в динамической памяти, явно вызывая и конструктор, и деструктор (в додельфяных версиях это было еще менее очевидно, чем сейчас, что несколько путало). Никакой автоматической очистки ресурсов. Отсюда, кстати, вылезла обработка исключений скорее растущая от структурных Win32-исключений - ресурсы ж как-то надо освобождать.
Плюс отсутствие как множественного наследования, так и его суррогатов типа явовских интерфейсов и совсем неочевидный синтаксис использования в одних случаях ключевого слова virtual, в других override.
В общем, конечно, мелочи, но постоянно возникает ощущение, что то или иное синтаксическое решение берется из плюсов и обрезается с тем, чтобы втиснуться в паскалевские рамки.
Скажем, свойства, появившиеся в дельфях и унаследованные билдером - ведь их прекрасно можно было бы реализовать за счет одной перегрузки операций, не ломая язык.
Остальные вещи, которых не хватает в паскале, относятся не столько к ООП, сколько к таким вкусностям С++, как шаблоны, перегрузка операций и пространства имен - ну да их и в Яве нет :)
|
| | | |
Всё растёт, всё развивается (бывает, что и в обратную сторону) ;-) 09.11.02 13:59
Автор: HandleX <Александр М.> Статус: The Elderman
|
> Естественно, базовые возможности ООП тут в наличии. > Инкапсуляция - наследование - полиморфизм, это святое. > Теперь о нитках.
> Переменные объявляются только в начале функции. В сочетании > с необходимостью конструирования объекта в произвольном > месте привело к тому, что объекты приходится конструировать > только в динамической памяти, явно вызывая и конструктор, и > деструктор (в додельфяных версиях это было еще менее > очевидно, чем сейчас, что несколько путало). Никакой > автоматической очистки ресурсов. Отсюда, кстати, вылезла > обработка исключений скорее растущая от структурных > Win32-исключений - ресурсы ж как-то надо освобождать. > Плюс отсутствие как множественного наследования, так и его > суррогатов типа явовских интерфейсов и совсем неочевидный > синтаксис использования в одних случаях ключевого слова > virtual, в других override. Это ещё ничего. Properties overriding — там вообще нет ключевого слова override, просто в потомке заново как хочешь свойство переобозначаешь(лишь бы тип совпадал) ;-)
Кстати, тут вопрос такой. Вот Delphi32 грузится... долго... загрузился наконец. Смотрим в Диспетчере задач — отожрал 6,5 Мб памяти. А вот грузится Winword — быстро, почти сразу на экране окно ждёт ввода текста... отожрал вордец 7,5 Мб памяти. Вопрос: почему более громоздкая софтина грузится быстрее? Из-за того, что в дельфийских приложениях десятки тысяч объектов динамически себя конструируют? Но вроде и в ворде конструкторов не меньше будет. Или из-за того, что с вордовским .exe что-то сделали уже после компиляции? Если тормоза загрузки Delphi32 связаны с дин. конструированием объектов, тогда это огромный недостаток. Но мне трудно себе представить, как же всё-таки объект может себя не конструировать? Это и не объект тогда, а что-то вроде структуры с полями-функциями ;-) Просветите, плз...
> Остальные вещи, которых не хватает в паскале, относятся не > столько к ООП, сколько к таким вкусностям С++, как шаблоны, > перегрузка операций и пространства имен - ну да их и в Яве > нет :) Ну да, круто. Может просто борланд поконсервативней. К примеру, перезагрузка функций тоже не сразу появилась (а кстати, в C она сразу была?). Да и тут две стороны медали. Сколько сейчас в С исторического хлама, которого уже никто давно не использует? Компилер от этого быстрее не становится ;-)
И несмотря на мостроидальность, Delphi довольно быстро трансформировали в весёлую штуку под названием Kylix — Юниксоидам должно понравится.
|
| | | | |
Всё растёт, всё развивается (бывает, что и в обратную сторону) ;-) 09.11.02 22:56
Автор: dl <Dmitry Leonov>
|
> Кстати, тут вопрос такой. Вот Delphi32 грузится... долго... > загрузился наконец. Смотрим в Диспетчере задач — отожрал > 6,5 Мб памяти. А вот грузится Winword — быстро, почти сразу > на экране окно ждёт ввода текста... отожрал вордец 7,5 Мб > памяти. Вопрос: почему более громоздкая софтина грузится > быстрее? Из-за того, что в дельфийских приложениях десятки > тысяч объектов динамически себя конструируют? Но вроде и в > ворде конструкторов не меньше будет. Или из-за того, что с > вордовским .exe что-то сделали уже после компиляции? Если > тормоза загрузки Delphi32 связаны с дин. конструированием > объектов, тогда это огромный недостаток. Но мне трудно себе > представить, как же всё-таки объект может себя не > конструировать? Это и не объект тогда, а что-то вроде > структуры с полями-функциями ;-) Просветите, плз...
ggg на это ответил, объяснение выглядит вполне реалистично.
> > Остальные вещи, которых не хватает в паскале, > относятся не > > столько к ООП, сколько к таким вкусностям С++, как > шаблоны, > > перегрузка операций и пространства имен - ну да их и в > Яве > > нет :) > Ну да, круто. Может просто борланд поконсервативней. К > примеру, перезагрузка функций тоже не сразу появилась (а > кстати, в C она сразу была?). Да и тут две стороны медали. > Сколько сейчас в С исторического хлама, которого уже никто > давно не использует? Компилер от этого быстрее не > становится ;-)
В C - перегрузки отродясь не было, в С++ - если и не с начала, до с достаточно ранних версий. Перегрузки операторов в Дельфи, насколько я понимаю, нет до сих пор. Что касается исторического хлама - даже и не знаю такого. С вообще небольшой язык, в С++ скорее реже используются более новые возможности.
|
| | | | |
Если есть флейм, то грех в нем не поучавствовать ;) На счет наезда на С 09.11.02 21:02
Автор: PS <PS> Статус: Elderman
|
> Ну да, круто. Может просто борланд поконсервативней. К > примеру, перезагрузка функций тоже не сразу появилась (а > кстати, в C она сразу была?).
А ты не путай C и C++ ! Это два разных языка. На столько разных что у них папы разные: у С - Керниган с Ричи (мир праху ихнему стилю), а у С++ Страуструп. И что значит "кстати, в C она сразу была?" - в С никоглда не было перезагрузки функций. Патому чта в 70х годах даже понятия такого не существовало.
В С++ перегрузка была сразу, как и все остальное (исключая шаблонов которые хоть и были с начала, но развились благодоря нашему соотечественику).
Что касается Kylix... Вопрос спорный, и думаю упоминать его сдесь излишне.
Тем более что изначально вопрос был о языке, а не о средстве. Но почему то, как показывает практика, спор о языке ВСЕГДА переходит на уровень реализации (компиляторов, оболочек, ect...), что, имхо, есть демагогия и флейм
|
| | | | | |
Если есть флейм, то грех в нем не поучавствовать ;) На счет наезда на С 09.11.02 23:04
Автор: dl <Dmitry Leonov>
|
> В С++ перегрузка была сразу, как и все остальное (исключая > шаблонов которые хоть и были с начала, но развились > благодоря нашему соотечественику).
Ууу, если бы. Шаблоны были ой как не с начала (собственно, и прочие вещи появлялись в языке очень постепенно). Впервые они и обработка исключений были описаны в ARM, который вышел уже после версии 2.0, а компиляторы, их реализующие, появились еще позже. А Степанов все-таки не развивал шаблоны - он просто написал с их использованием библиотеку контейнеров, алгоритмов и т.п., которая, конечно, дала языку очень много.
|
| | | | |
word 09.11.02 15:41
Автор: ggg <ggg> Статус: Elderman
|
имхо тормоза не из-за работы программы
на современных компах разницу в скорости конструирования не увидишь
при загрузке проги тормоза в основном от загрузки библиотек и перемещения их в памяти
всё что использует word уже давно сидит в памяти (explorer), причём думаю MS не поленились при линковке распихать библиотеки так, чтобы они не пересекались и не надо было их двигать, а для некоторых библиотек наверно и импорты привязаны
|
|
|