Re[2]: Чем вам всем не угодил Delphi?
От: iiice Россия  
Дата: 30.04.08 08:30
Оценка: +1 :)
DR>Не нравится Дельфи из за типично чрезвычайно низкого качества написанных на ней программ.

Так и запишем: QIP и Total Commander — низкого качества.А мужики-то не знают
Re[4]: Чем вам всем не угодил Delphi?
От: DOOM Россия  
Дата: 30.04.08 08:32
Оценка:
Здравствуйте, kuj, Вы писали:

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



G>>>2)Отсутствие интерфейсов и множественного наследования. (наследие паскаля)


DOO>>Зато были делегаты (нет необходимости в интерфейсах), виртуальные конструкторы (вроде, сам уже плохо помню) и еще много чего.


kuj>С какой радости делегаты отменяют необходимость в интерфейсах???


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

Disclaimer: описанный подход C++'ника не мой. Это из моих древних споров с одногруппником в универе (он был ярый C++'ник, да и на самом деле профессионал своего дела), спор был на тему, если не ошибаюсь, а на кой ляд вообще нужно множественное наследование...

P.S. К Disclaimer'у — сам я ни с C++, ни с дельфи не имел дела уже много лет, просто этот спор разбудил древние инстинкты Это я заранее к тому, что могу что-то уже не знать в новейших достижениях ООП или банально что-то забыть.



G>>>3)Отсутствие Generic типов или шаблонов любого вида. (наследие паскаля)

DOO>>Шаблон — это скорее развитый препроцессор. Препроцессор отношения к языку не имеет (что мне мешает взять и мои исходники на дельфях обработать препроцессором того же gcc?).

kuj>Ой ли?

А что нет что ли? Ноги-то откуда растут? Понятно, что со временем это обрастало фичами, появилась обратная связь с компилятором и т.п. Но идея абсолютно "макросной" природы — готов поспорить, что изначально это и реализовывалось исключительно препроцессором.
Re[6]: Чем вам всем не угодил Delphi?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 30.04.08 08:33
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>

kuj>int x = 3;

kuj>x += x++;

kuj>


kuj>Вопрос: чему равен x?


И часто такой код в проектах видели?

Вообще-то никто не сомневается что C++ занимает первое место по чису Undefined behavior, но разве кто-то заставляет так писать?
Re[7]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 30.04.08 08:37
Оценка:
Здравствуйте, DOOM, Вы писали:

W>>>Какие проблемы и как делать инкремент\декремент без объявления типа указателя (фактически задавая размер памяти, адресуемой указателем)?

W>>>В Delphi нет пост/прекрементов, но это не напрягает и имхо это вообще наследие архитектуры PDP-11, где пост/прекременты поддерживались на уровне системы команд процессора.

kuj>>

kuj>>int x = 3;

kuj>>x += x++;

kuj>>


kuj>>Вопрос: чему равен x?


DOO>Ой, сейчас разойдусь... Perl cо своим криптосинтаксисом тут всех уделает


Я о том, что пост и пре инкременты и декременты к сожалению в ряде случаев понижают читабельность кода.
Re[7]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 30.04.08 08:38
Оценка:
Здравствуйте, gandjustas, Вы писали:

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


kuj>>

kuj>>int x = 3;

kuj>>x += x++;

kuj>>


kuj>>Вопрос: чему равен x?


G>И часто такой код в проектах видели?

Не часто. Точнее совсем не видел. К счастью, не доводится работать с кодом индусов...

G>Вообще-то никто не сомневается что C++ занимает первое место по чису Undefined behavior, но разве кто-то заставляет так писать?


Это был C#, кстати.
Re[4]: Чем вам всем не угодил Delphi?
От: iiice Россия  
Дата: 30.04.08 08:41
Оценка:
G>Раньше это было как раз актуальней, т.к. существовал большой парк мэйнфреймов со своими ОС, более разнообразных рабочих станция (не только под Юниксами), на писюках попадались другие системы, например, OS/2. По-моему, это сейчас проблема переносимости не так остра. Прежле всего, разнообразие систем уменьшилось, + какая-никакая стандартизация со временем принесла плоды.


Вот скажи мне как программист программисту: какая процессорная архитектура и операционная система нынче самые распространённые. После ответов на эти вопросы ты определённо пересмотришь своё мнение.
Re[5]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 30.04.08 08:51
Оценка:
Здравствуйте, DOOM, Вы писали:

G>>>>2)Отсутствие интерфейсов и множественного наследования. (наследие паскаля)


DOO>>>Зато были делегаты (нет необходимости в интерфейсах), виртуальные конструкторы (вроде, сам уже плохо помню) и еще много чего.


kuj>>С какой радости делегаты отменяют необходимость в интерфейсах???


DOO>Подход в проектировании — дельфист делал объект, многие методы которого определял в рантайме — таким образом из одного класса получались объекты с различным поведением. С++'ник делал базовый объект + объекты-интерфейсы (соответственно абстрактные), в которых уже (статично) определялось конкретное поведение объекта. Т.е. тут однозначно делегаты удобнее и дают большую гибкость, хотя ярые C++'ники такой вариант вообще понять не могли — для них изменение поведения объекта в рантайме было чем-то из ряда вон выходящим.


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

Благодаря DI мой ClassA зависит только от IInterfaceB, который реализуется классами ClassB1, ClassB2 и ClassB3. В любой момент времени я могу открыть конфигурацию IoC и сменить байндинг с ClassB1, например, на ClassB2, совсем не затрагивая при этом ClassA. Да, в Delphi и C++ для этого используется паттерн фабрика, НО появляется зависимость ClassA, от фабрики! Вот такие пироги с капустой...

Ну конечно и плюшки типа interceptors благодаря IoC/DI контейнеру конечно тоже имеют большое значение в ряде случаев.

DOO>Disclaimer: описанный подход C++'ника не мой. Это из моих древних споров с одногруппником в универе (он был ярый C++'ник, да и на самом деле профессионал своего дела), спор был на тему, если не ошибаюсь, а на кой ляд вообще нужно множественное наследование...


В .Net от множественного наследования сразу отказались.

G>>>>3)Отсутствие Generic типов или шаблонов любого вида. (наследие паскаля)

DOO>>>Шаблон — это скорее развитый препроцессор. Препроцессор отношения к языку не имеет (что мне мешает взять и мои исходники на дельфях обработать препроцессором того же gcc?).
kuj>>Ой ли?
DOO>А что нет что ли? Ноги-то откуда растут? Понятно, что со временем это обрастало фичами, появилась обратная связь с компилятором и т.п. Но идея абсолютно "макросной" природы — готов поспорить, что изначально это и реализовывалось исключительно препроцессором.

Ну почитай про то, как реализованы generics в .Net Узнаешь много нового
Re[7]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 30.04.08 09:01
Оценка:
Здравствуйте, DOOM, Вы писали:

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


G>>Короче := и = — исключительно дело вкуса.


DOO>А если еще учесть, что за 10 лет школы человек привыкает, что "=" означает сравнение, то для оператора присваивания ему логично увидеть новое обозначение,


Всегда в школе считал, что "=" это равно, а значение присвоить или сравнение имеет исключительно в зависимости от контекста. При чем в львином ряде случаев = означает таки присвоить.

x+1 = y

y = 5

-----

x = 4

Угу?

DOO>а для сравнения оставить прежнее


Мне нужно нажать только =, в то время как тебе в Delphi — зажать shift, нажать 6, отжать shift, нажать = и это для, пожалуй, наиболее используемого оператора...
Re[5]: Чем вам всем не угодил Delphi?
От: goto Россия  
Дата: 30.04.08 09:22
Оценка:
Здравствуйте, kuj, Вы писали:

G>>И шо? И у Дельфи есть ниша.


kuj>Была. Уже нету. Занята .Net


И хорошо, по-моему . Только образование обладает инетрностью, продолжают учить Дельфям. Масштабов и соотношений не знаю.
Re[5]: Чем вам всем не угодил Delphi?
От: goto Россия  
Дата: 30.04.08 09:26
Оценка:
Здравствуйте, iiice, Вы писали:

I>

I>Вот скажи мне как программист программисту: какая процессорная архитектура и операционная система нынче самые распространённые. После ответов на эти вопросы ты определённо пересмотришь своё мнение.

Если говорить абстрактно, то не знаю, ибо есть мобилы, интеллектуальные пылесосы и крылатые ракеты. Лично на моем огороде все пожрал жук писюк.
Re[7]: Чем вам всем не угодил Delphi?
От: Schade Россия  
Дата: 30.04.08 09:26
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>← — присвоение

См. например Haskell Вполне себе поддерживает Unicode символы в исходном коде в таком качестве. Более того — деструктивное присваивание суть ересь и ее использование должно быть ограничено минимумом. Так что <- или ← — в самый раз. А := лишено смысловой нагрузки.
Re[5]: Чем вам всем не угодил Delphi?
От: goto Россия  
Дата: 30.04.08 09:29
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Я думаю, тут куча народу бы стала спорить — кто там и для каких скриптов хорош (по-любому, нашлись бы противники питоновской фичи по смешиванию оформления кода и задания границ синтаксических конструкций)

DOO>Можно ведь сказать, что "Delphi — объективно хороший язык/IDE для создания настольных приложений" Вот только ни фига это не будет объективно

Споров про плохость и хорошесть я и пытаюсь избежать. Объективных высказываний тоже .

DOO>>>Во-вторых, одного взгляда на C++ должно хватать, чтобы понимать какими агли хаками шел переход от C до C++ (есть где-то в недрах gcc C++ препроцессор — т.е. преобразование программы на C++ в программу на C — все конструкции С++ раскрываются как макросы).


G>>Язык и реализация его компилятора — разные вещи.

DOO>Бесспорно, просто это демонстрация — C++ разрабатывался именно, как надстройка над C, который, по-любому, когда-то был не более, чем набор удачных макросов для какого-нибудь ассемблера (вон я в универе делал из NASM'а эдакий Basic ). Вот все это и тянется в финальном языке.

Да вроде как С++ придумывался как отдельный язык по подходу. Видимо синтаксис C хорошо ложится на большинство программистских мозгов, вот и был взят. На той же Java и C# С и С++ тоже повалялись.

...
DOO>Ну сколько процентов программистов 10 лет назад в России писали программы для мэйнфреймов? Еще лучше вопрос — сколько мэйнфреймов было в России 10 лет назад

Сей ужас был в основном пораньше, > 10 лет назад. Из-за этого, в частности, многие вещи, совершенно не вычислительные, когда-то даже писали на FORTRAN IV, это был едва ли не единственный общий знаменатель. Потом им стал С. Сужу по своим давним похождениям в нескольких конторах. Временами мне приходилось писать одновременно под 3 платформы, а я не столь уж древен. А под 2 так можно сказать часто: на писюке отлаживаешь алгоритмы (удобная IDE), а потом на Юниксе уже "внедряешь".
Re[6]: Чем вам всем не угодил Delphi?
От: hattab  
Дата: 30.04.08 09:39
Оценка:
Здравствуйте, gandjustas, Вы писали:

H>>Видимо. И не только мне. На форумах обсуждалось неоднократно с последующими советами понавставлять по коду GC.Collect

G>Мда... Перечитайте лучше форумы.

Мне-то это зачем? У меня таких проблем нет и небыло никогда...

G>>>А как еще можно было сделать динамические строки и массивы, но не нагружать программиста вызовами Free?

H>>Ну так это же плюс. Чего ты его охаял?
G>Это не плюс, это необходимость. Плюс был бы если бы можно было врубать GC для всех объектов.

Для тебя это плюс? Для меня нет. Ну и? У кого больше?

H>>Под Delphi я и имел ввиду компилятор (а что же еще-то может за этим следить...).

G>В .NET следит рантайм.

Мы не о .Net тут говорим, если я не ошибаюсь.

H>>Семантика для работы с интерфейсными классами и с обычными может быть одинаковой (см. TComponent). Но все это тонкости дающие большую гибкость. И необъяснимые глюки это может вызвать только там, где программист работает сам незная с чем (или не до конца понимая механизм).

G>В C# люди работают, не зная с чем, и баги не возникают почему-то.

уморил.

H>>2005/6 имеют Code Templates. Штука очень приятная и расширяемая.

G>Мда... в 2005 году уже студия 2005 есть.

Ты сравнивай тогда первую версию Delphi...

Придирки, и не более того.
G>Я ловил сотни ошибоки из-затого что люди забывали/не_знали_что_надо вызывать Free. В Управляемых средах вообще таких проблем нет. Придирки вполе по делу. Вы просто не понимаете, потому что не работали с этим.

Если люди чего-то там не знали/забывали, это характеризует только их, но не инструмент. Если выражаться простым языком: не можешь срать -- не мучай жопу. В управляемых средах, таки, есть место ручной очистке (пусть даже семантически скрываемой) для объектов владеющих ресурсами. Что начнется, когда человек, который работает не зная с чем (с твоих же слов), будет следовать навязываемой идеологии...

H>>Какая разница кто-кого догоняет или откуда заимствуются те или иные фичи? Ты тут о минусах говорил, я же тебе на плюсы указываю.

G>Эти плюсы не перекрывают минусы. А в других языках и платформах минусов поменьше.

В других платформах есть тормоза неизвестно откуда появляющиеся, но теория их существование отрицает

G>Мда... Посмотри функционал iostream в C++, TextWriter в .NET (в Java есть аналогичные классы) — побогаче будет.

G>Типы text, file of ... — вообще ужас. Поганейшее наследие паскаля.
G>Если вы не знаете других способов, то это на значит что delphi в чем-то удобен.

Дава,й в конкретику ударяйся уже. Демагогия запарила.

H>>В нативной 2006 точно есть. Может и в 2005 было, я не помню.

G>Смешно даже. STL для C++ сущесвует гораздо раньше, в .NET изначально было (c 2001 года), в Java еще раньше.
G>Delphi тут сильно отстает.

Мы тут, что С++ обсуждаем или Java? Ты сказал, что в Delphi чего-то нет. Я тебе говорю, что есть (может оно и в семерке уже было, я не помню).
Re[7]: Чем вам всем не угодил Delphi?
От: Mamut Швеция http://dmitriid.com
Дата: 30.04.08 09:52
Оценка:
H>Мы тут, что С++ обсуждаем или Java? Ты сказал, что в Delphi чего-то нет. Я тебе говорю, что есть (может оно и в семерке уже было, я не помню).

И сколько 7-ка стоит?
... << RSDN@Home 1.2.0 alpha 4 rev. 1084>>


dmitriid.comGitHubLinkedIn
Re[8]: Чем вам всем не угодил Delphi?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 30.04.08 09:54
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>Всегда в школе считал, что "=" это равно, а значение присвоить или сравнение имеет исключительно в зависимости от контекста. При чем в львином ряде случаев = означает таки присвоить.

Кстати в SQL = означает как присваивание, так и сравнение. Так что спор ни о чем. Чисто дело вкуса.
Re[6]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 30.04.08 09:54
Оценка:
Здравствуйте, goto, Вы писали:

G>>>И шо? И у Дельфи есть ниша.


kuj>>Была. Уже нету. Занята .Net


G>И хорошо, по-моему . Только образование обладает инетрностью, продолжают учить Дельфям. Масштабов и соотношений не знаю.


Это так к сожалению. Вообще любой программист в первую очередь должен уметь самообучаться. Преподаватели в ВУЗах редко когда имеют высокую квалификацию. Те, кто кроме преподавания занимаются еще и практическими вопросами на другом месте работы — редкость. Вот и учат по конспекту лекций, составленному хез в какие годы.

Базу конечно дадут, но без самообучения далеко с ней не уедешь.
Re[9]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 30.04.08 10:01
Оценка:
Здравствуйте, gandjustas, Вы писали:

kuj>>Всегда в школе считал, что "=" это равно, а значение присвоить или сравнение имеет исключительно в зависимости от контекста. При чем в львином ряде случаев = означает таки присвоить.

G>Кстати в SQL = означает как присваивание, так и сравнение. Так что спор ни о чем. Чисто дело вкуса.

А в PL/SQL присваивание — оператор :=

Сам по себе SQL имеет очень строгий синтаксис. Например, UPDATE table SET column = value — SET явно указывает, что в данном контексте = оператор присваивания, а в SELECT * FROM table WHERE column = value — WHERE явно указывает, что в данном контексте = оператор сравнения.
Re[6]: Чем вам всем не угодил Delphi?
От: hattab  
Дата: 30.04.08 10:03
Оценка:
Здравствуйте, kuj, Вы писали:

H>>Видимо. И не только мне. На форумах обсуждалось неоднократно с последующими советами понавставлять по коду GC.Collect


kuj>Ссылки в студию.


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

H>>Это с возвратом созданного объекта чтоль? Ну и в чем проблема? Вот GetMem/VirtualAlloc тоже сырую память отдают и ее возвращать нужно. Не смущает? На самом деле ни какой проблемы в этом нет, объекты, как правило создаются для хранения в каких-либо коллекциях/списках и прочих. И уж точно нет ни какого напряга дернуть Free. Придирки, и не более того.


kuj>Ты забываешь о человеческом факторе.


Человеческий фактор отмазка хорошая Кто-то заставляет работать с такими представителями рода человеческого? Delphi 2006 благодаря новому менеджеру памяти исправно сигналит обо всех утечках.

H>>Уж не про LINQ ли ты говоришь Ну в 2008 или 2009 обещают анонимные методы добавить еще.


kuj>Lambda, linq, implicitly typed variables (я, правда, несколько негативно к идеи применения var отношусь, но это тема для отдельного разговора), extension methods, annonymous types, auto properties, type inference, object и collection initializers...


И правда, тут об этом не стоит О Delphi таки говорим.

H>>>>Списки (различные), стеки, очереди, бит-контейнеры, ассоциативные массивы. Мало?

G>>>Это оно когда появилось? Случаем не в Delphi.NET ?
H>>В нативной 2006 точно есть. Может и в 2005 было, я не помню.
kuj>Только без generic`ов ОЙ как плохо.

Не сильно, если честно Для Delphi 2006 есть неофициальный тул (по сути препроцессор) который реализует много чего: и дженерики, и case по строкам, и exit с возвратом результата. В общем кому нужно -- тот найдет.
Re[4]: Чем вам всем не угодил Delphi?
От: hattab  
Дата: 30.04.08 10:03
Оценка:
Здравствуйте, kuj, Вы писали:

H>>И неконтролируемая... Из-за которой, порой, возникают прелесные фризы на ровном месте.


kuj>Не может быть никаких фризов. Сборщик муссора ведь не в главном потоке приложения выполняется.


Суслика видишь? Нет. А он есть (c) ДМБ. А сборщику не нужно лочить кучу, чтоб дефрагментацию делать? А процы уже у всех поголовно двух/четырех головые?

H>>Да ты что? Управляемая (читай контролируемая) сборка мусора это недостаток?


kuj>В общем случае это таки недостаток. Особенно, когда нет в наличии generic smart pointer`ов (прерогатива C++).


Так в чем недостаток-то?

kuj>Без полноценного DI в Delphi толку от интерфейсов куда как меньше.


Чего-то не улавливаю связи...

G>>>3)Отсутствие Generic типов или шаблонов любого вида. (наследие паскаля)


H>>Дженерики есть в 2007 под .Net.


kuj>Думаю тут речь не шла о .NET Delphi. Иначе спор деградировал бы до: какой язык — Delphi.Net или X лучше.


Я там дальше еще написал о планируемых в 2008
Re[4]: Чем вам всем не угодил Delphi?
От: hattab  
Дата: 30.04.08 10:05
Оценка:
Здравствуйте, Lloyd, Вы писали:

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


K>>>6. Несовместимость разных версий IDE


H>>А зачем мне совместимость IDE? Чего там совмещать?


L>Видимо имелось в виду то, что формат dfm-а время от времени перестает пониматься более новой версией IDE.


Если мне не изменяет память, это было один раз при смене формата .dfm. Так и то, в поставку была включена утиль для конвертирования.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.