информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetСетевые кракеры и правда о деле ЛевинаВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / miscellaneous
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
попробую... 09.11.02 02:07  Число просмотров: 1154
Автор: dl <Dmitry Leonov>
Отредактировано 09.11.02 02:11  Количество правок: 1
<"чистая" ссылка>
Естественно, базовые возможности ООП тут в наличии. Инкапсуляция - наследование - полиморфизм, это святое. Теперь о нитках.

Переменные объявляются только в начале функции. В сочетании с необходимостью конструирования объекта в произвольном месте привело к тому, что объекты приходится конструировать только в динамической памяти, явно вызывая и конструктор, и деструктор (в додельфяных версиях это было еще менее очевидно, чем сейчас, что несколько путало). Никакой автоматической очистки ресурсов. Отсюда, кстати, вылезла обработка исключений скорее растущая от структурных Win32-исключений - ресурсы ж как-то надо освобождать.
Плюс отсутствие как множественного наследования, так и его суррогатов типа явовских интерфейсов и совсем неочевидный синтаксис использования в одних случаях ключевого слова virtual, в других override.

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

Остальные вещи, которых не хватает в паскале, относятся не столько к ООП, сколько к таким вкусностям С++, как шаблоны, перегрузка операций и пространства имен - ну да их и в Яве нет :)
<miscellaneous>
Что хорошего в паскале 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 не поленились при линковке распихать библиотеки так, чтобы они не пересекались и не надо было их двигать, а для некоторых библиотек наверно и импорты привязаны
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach