http://keeper89.blogspot.ru/2013/09/delphi-xe5xe6.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+Keeper89+(Keeper's+blog)
Про STL и многое другое - я к сожалению остался в меньшинстве...
Про STL и многое другое - я к сожалению остался в меньшинстве...
«Про STL и многое другое - я к сожалению остался в меньшинстве...»
ОтветитьУдалить-- Про "многое другое" не скажу, а вот зачем Вам STL - в толк не возьму.
Вам чего-то не хватает в System.Generics.Collections?
Во-первых - не хватает. Ну "убоги" они. Простите уж.
ОтветитьУдалитьВо-вторых - STL - "пища для ума" и "образец для подражания". Если люди "программируют на STL", а не на plain С++ - у них "мировоззрение" меняется. В лучшую сторону. Это моё личное наблюдение.
Понимаете. Я уже *неоднократно* сталкивался с те, что у людей надо ВОСПИТЫВАТЬ "вкус к хорошему программированию". И мне кажется - STL- ХОРОШИЙ образчик "вкуса". Как и QT кстати. Как и FireMonkey. Тут можно "бить меня ногами". Но! Я - СКАЖУ - АРХИТЕКТУРНО - FM - ХОРОШ. На мой "вкус". Реализация - ДА - "хромает".
УдалитьИли вот взять - Turbo-Professional!!! Это ведь - "кладезь". Это - ОБРАЗЕЦ "объектного программирования БЕЗ объектов". Тут тебе и полиморфизм и виртуальные функции. И ВСЕ концепции.
ЗАПИСЬ "с точкой" - это ведь не показатель "объектности". "Объектность" она в мозгу.. В ДНК... Её надо "прочувствовать"...
Хотя Степанов и говорит - " STL - это не объектный подход"...
«Во-первых - не хватает. Ну "убоги" они. Простите уж.»
Удалить-- А конкретно - чего Вам не хватает? Прямо интересно уже...
Все основные структуры есть. Сделать свои в том же стиле - не проблема.
«Во-вторых - STL - "пища для ума" и "образец для подражания". Если люди "программируют на STL", а не на plain С++ - у них "мировоззрение" меняется. В лучшую сторону. Это моё личное наблюдение.»
-- Я такого не наблюдал. Скорее - наоборот :-)
«Я уже *неоднократно* сталкивался с те, что у людей надо ВОСПИТЫВАТЬ "вкус к хорошему программированию". И мне кажется - STL- ХОРОШИЙ образчик "вкуса"»
-- С необходимостью воспитания согласен. Но вынужден констатировать, что вкусы у нас - очевидно, разные.
Я не вижу в STL ничего (совершенно ничего) заслуживающего столь превосходных реляций.
«Или вот взять - Turbo-Professional!!! Это ведь - "кладезь". Это - ОБРАЗЕЦ "объектного программирования БЕЗ объектов".»
-- Мнда? Ну да, там были некоторые интересные функции с точки зрения, чтобы самому их не писать.
Но вот "алгоритм маляра" в WordCount/ExtractWord - за это IMHO "расстреливать нужно за бруствером", а TPStack - вообще ужас... Не к ночи будет помянут... То, как отслеживается использование стека - отдельная тема семинара у нас была в разделе "как не надо делать".
Turbo Vision - IMHO интереснее в разы. С точки зрения архитектуры. Но актуальность он уже утратил конечно, окончательно. VCL местами неплох. Архитектурно разумеется. Пожалуй, единственное его слабое место, на которое нельзя не указать - это "God class" TDataset. В остальном - архитектурно, очень достойно. AnyDAC - очень ничего архитектурно выглядит. ToolBar2000/TBX - очень достойны в основной идее.
И кстати, до сих пор не понимаю: зачем вообще нужно "объектное программирование без объектов"?
«Хотя Степанов и говорит - " STL - это не объектный подход"...»
-- Для меня несущественно, что говорит Степанов :-)
С STL же была одна забавная история, которую я уже рассказывал. После недавнего холивара C++ vs Pascal, в которых я по молодости участвовал, пришлось разбираться с кодом, использовавшим STL. Под отладчиком я попал в "недра" означенного STL и поймал себя на мысли, что уже 15 минут не могу понять, как "это" работает. Там была какая-то фигня, что-то вроде &P* - зачем это делать, если операции взаимнообратны. Позвал на помощь своего визави по холивару - мол, ты это любишь - объясни зачем такая "байда" :-) Через полтора часа рабочего времени он хлопнул себя по лбу и воскликнул "Ну это очевидно!" Долго потом смеялись :-)
Так что, не могу разделить Ваших реляций в отношении STL.
В отношении же архитектуры STL не могу сказать ничего плохого. Ну и чем восхищаться - тоже не вижу.
Удалить"Все основные структуры есть. Сделать свои в том же стиле - не проблема."
Удалить-- что я и СДЕЛАЛ.. лет 10-ть назад.. БЕЗ Generic'ов... Но это сделал Я. Ещё раз - Я. А НЕ MainStream.
"Я такого не наблюдал. Скорее - наоборот :-)"
Удалить-- Ну у нас с вами - РАЗНЫЕ наблюдения... :-) так - бывает...
"Но вот "алгоритм маляра" в WordCount/ExtractWord - за это IMHO "расстреливать нужно за бруствером", а TPStack - вообще ужас... Не к ночи будет помянут... То, как отслеживается использование стека - отдельная тема семинара у нас была в разделе "как не надо делать"."
Удалить-- вы с RX часом не путаете? Или я путаю?
"Под отладчиком я попал в "недра" означенного STL и поймал себя на мысли, что уже 15 минут не могу понять, как "это" работает. Там была какая-то фигня, что-то вроде &P* - зачем это делать, если операции взаимнообратны. Позвал на помощь своего визави по холивару - мол, ты это любишь - объясни зачем такая "байда" :-) Через полтора часа рабочего времени он хлопнул себя по лбу и воскликнул "Ну это очевидно!" Долго потом смеялись :-)"
УдалитьПерегрузка операторов?
*&P - только...
Удалить"Так что, не могу разделить Ваших реляций в отношении STL."
Удалить-- давайте "от противного".. у вас есть ваш собственный "образец вкуса"? Ну чтобы я понял. На "каком языке говорить", что ли...
Джоэла "образцом вкуса" вы ведь тоже наверное не считаете? А кого? Можно узнать?
""Но вот "алгоритм маляра" в WordCount/ExtractWord - за это IMHO "расстреливать нужно за бруствером", а TPStack - вообще ужас... Не к ночи будет помянут... То, как отслеживается использование стека - отдельная тема семинара у нас была в разделе "как не надо делать"."
Удалить-- вы с RX часом не путаете? Или я путаю?"
--- или вы хотите сказать, что Акжан Абдулин и компания в RX и ElPack "сдули" этот "алгоритм маляра" у Turbo Power из библиотеки Turbo Professional? Если так, то это - занятно...
«"Но вот "алгоритм маляра" в WordCount/ExtractWord - за это IMHO "расстреливать нужно за бруствером", а TPStack - вообще ужас... Не к ночи будет помянут... То, как отслеживается использование стека - отдельная тема семинара у нас была в разделе "как не надо делать"."
Удалить-- вы с RX часом не путаете? Или я путаю?»
-- С RX я даже не знаком :-) WordCount/ExtractWord содержались в TPString, затем мигрировали в OPString.
Оттуда же, вероятно, попали в RX Library, хотя это - мои домыслы. Я как-то бегло просматривал эту библиотеку и не нашёл для себя в ней ничего интересного.
«Через полтора часа рабочего времени он хлопнул себя по лбу и воскликнул "Ну это очевидно!" Долго потом смеялись :-)"
Перегрузка операторов?»
-- Может быть... Я не запомнил :-) Да и давно это было - лет 12 назад...
Вообще же, перегрузка операторов, точнее, отсутствие ограничений на её использование - бич кода на C++.
«"Так что, не могу разделить Ваших реляций в отношении STL."
-- давайте "от противного".. у вас есть ваш собственный "образец вкуса"? Ну чтобы я понял. На "каком языке говорить", что ли...
Джоэла "образцом вкуса" вы ведь тоже наверное не считаете? А кого? Можно узнать?»
-- Образцов вкуса (и для подражания) в программировании у меня нет - на то он и вкус :-)
Есть люди, которыми я восхищаюсь по разным причинам, но среди них ни одного программиста. - Увы.
Г-н Спольски говорит много, очень и очень много по делу. Я не слышал от него ничего, что вызвало бы у меня идиосинкразию. Но я, понятно, знаком не со всеми его работами в эпистолярном жанре. Из последнего мне весьма понравилось его обзор KANBAN (http://habrahabr.ru/post/147501/), хотя этот паразит эту технологию не упомянул вовсе.
Практически всё, опубликованное от Н.Вирта очень близко мне по духу.
Очень достойно выглядят работы Сергея Гурина, на которого я ссылался в контексте SDL/DeCAL.
Если честно, я вообще не вполне понимаю, что есть "вкус" в программировании. Как говорит мой любимый БГ "Когда при мне говорят: «Все будет хорошо», — я не знаю, что они имеют в виду." :-)
Я не раз убеждался, что в контексте программирования под "вкусом" подразумеваются совершенно разные вещи. Поэтому, для меня это не операционный язык.
«--- или вы хотите сказать, что Акжан Абдулин и компания в RX и ElPack "сдули" этот "алгоритм маляра" у Turbo Power из библиотеки Turbo Professional? Если так, то это - занятно...»
Удалить-- Не хочу я этого сказать :-) Я хочу сказать, что знаю происхождение WordCount/ExtractWord в нашем модуле XXXXSys.pas - и это - не из RX Lib. Его тогда не было.
Что же до "сдули", то м.б. это и так, а может - и нет. "Алгоритм маляра", как и всё дурное в этом мире, вполне мог быть "изобретён" заново в очередной раз :-)
"Есть люди, которыми я восхищаюсь по разным причинам, но среди них ни одного программиста. - Увы."
Удалить-- очень жаль
"«Через полтора часа рабочего времени он хлопнул себя по лбу и воскликнул "Ну это очевидно!" Долго потом смеялись :-)"
УдалитьПерегрузка операторов?»
-- Может быть... Я не запомнил :-) Да и давно это было - лет 12 назад...
Вообще же, перегрузка операторов, точнее, отсутствие ограничений на её использование - бич кода на C++."
-- так перегрузка или нет? Чего "знакомый" по лбу щёлкал?
"Как говорит мой любимый БГ"
Удалить-- тут я скажу обратное - "среди музыкантов - нет людей, которыми я бы восхищался"...
Ну у всех бывают неудачи...
УдалитьУ Turbo Power - видимо тоже..
Хотя ни TPString, ни OPString - я что-то не припомню.. Старею наверное...
"а TPStack - вообще ужас... Не к ночи будет помянут... То, как отслеживается использование стека - отдельная тема семинара у нас была в разделе "как не надо делать"
-- а тут можно поподробнее?
«"«Через полтора часа рабочего времени он хлопнул себя по лбу и воскликнул "Ну это очевидно!" Долго потом смеялись :-)"
УдалитьПерегрузка операторов?»
-- Может быть... Я не запомнил :-) Да и давно это было - лет 12 назад...
Вообще же, перегрузка операторов, точнее, отсутствие ограничений на её использование - бич кода на C++."
-- так перегрузка или нет? Чего "знакомый" по лбу щёлкал?»
-- Я же говорю: уже не помню - давно это было совсем. Просто здесь как я уже говорил ранее, я сказал себе "так быть не должно", но не стал ничего предпринимать, поскольку в STL для C++ для меня нет никакой ценности. Я знаю принципы, на которых она основана, если придётся воспользоваться C++, то "поплевавшись" на отличия &P* и &*P и прочие "изящества" синтаксиса C++, я смогу его применить для своих задач, хотя и надеюсь, что такое не понадобится :-)
Конструктивный вывод для себя я сделал очень простой - реализация изобилует "магией" и "шаманством". В моей системе ценностей такой код не является хорошим.
«"Как говорит мой любимый БГ"
-- тут я скажу обратное - "среди музыкантов - нет людей, которыми я бы восхищался"...»
-- Ну, БГ скорее - поэт. Ну и музыкант, конечно, тоже :-)
«Ну у всех бывают неудачи...
У Turbo Power - видимо тоже..
Хотя ни TPString, ни OPString - я что-то не припомню.. Старею наверное...»
-- Да бросьте :-) (http://d-edit.googlecode.com/svn/trunk/tp7/UNITS/TPSTRING.PAS)
TPEntry могу ещё вспомнить. Та ещё свалка функциональности.
TPCrt, TPBCD были очень полезны. TPEdit - неудобен, хотя, для того времени...
TPErrHan в своё время оказал на меня сильное влияние.
А TPVArray вообще - использовался в качестве СУБД :-D
«"а TPStack - вообще ужас... Не к ночи будет помянут... То, как отслеживается использование стека - отдельная тема семинара у нас была в разделе "как не надо делать"
-- а тут можно поподробнее?»
-- Там было что-то вроде такого. В Turbo Pascal того времени бичом было переполнение стека. Не только из-за рекурсии, но из-за его искусственного ограничения нами (память экономили) с одной стороны, отключении Stack owerflow (для скорости) с другой, и локальных переменных (помните тип Striing, хотя в чистом виде его не использовали) с третьей. Переполнение стека никак не "ловилось", но гарантированно приводило к нестабильной работе приложения.
По-моему, в TPStack было предложено решение, которое позволяло определить количество стека, используемое приложением. Техника, если мне не изменяет память была следующей: они перепрограммировали таймер, заставляя срабатывать соответствующее прерывание намного чаще, чем обычно, устанавливали обработчик этого прерывания и проверяли StackPtr, который был доступен в Turbo Pascal, вычисляя максимум в использовании стека. Ну, думаю, очевидно, чего стоила такая реализация и какая от неё была "польза".
Что за раскопки на кладбище старого кода?)
Удалить«"Все основные структуры есть. Сделать свои в том же стиле - не проблема."
Удалить-- что я и СДЕЛАЛ.. лет 10-ть назад.. БЕЗ Generic'ов... Но это сделал Я. Ещё раз - Я. А НЕ MainStream.»
-- Ну, то что Вы сами что-то сделали (не только Вы, к слову) совершенно не указывает на "убогость" System.Generics.Collections. Стандартные структуры данных как были 25 лет назад, так таковыми и остались, независимо от количества лиц, их реализовавших. Простите за банальность, конечно.
@Unknown «Что за раскопки на кладбище старого кода?)»
Удалить-- Скорее, это обсуждение "вкусов" :-)
«"Есть люди, которыми я восхищаюсь по разным причинам, но среди них ни одного программиста. - Увы."
Удалить-- очень жаль»
-- Почему? О чём жалеть, собственно? :-)
STL без шаблонов - либо в ущерб производительности, либо в ущерб юзабельности.
ОтветитьУдалить"STL без шаблонов - либо в ущерб производительности, либо в ущерб юзабельности."
ОтветитьУдалить-- мне кажется - вы не всё внимательно читаете.
http://18delphi.blogspot.ru/2013/07/blog-post_3683.html
Удалить>http://18delphi.blogspot.ru/2013/07/blog-post_3683.html
ОтветитьУдалитьТак это "в ущерб юзабельности" и есть.