Re[2]: Чем вам всем не угодил Delphi?
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.05.08 07:12
Оценка: :))
Здравствуйте, csharpworker, Вы писали:
C>- все примеры, SDK и тому подобные вещи идут с примерами на СИ и Шарпе. Задолбался я переводить это все на паскаль.
C>- begin, end
C>- var
Возрадуйся, ибо в новом шарпе таки есть var
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[13]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 05.05.08 07:13
Оценка:
Здравствуйте, DOOM, Вы писали:

kuj>>>>1. У Javascript есть нормальный garbage collector. Ему не нужны smart pointer`ы.

DOO>>>Тем не менее. Мне они не нужны и в C — и так хорошо живется. У всего есть своя ниша.
G>>Не показывай свою необразованность. В C нет обънектов, смарт поинтеры там не нужны.
DOO>Соответственно все завязано на основную форму приложения, а значит все объекты будут корректно уничтожены рано или поздно — это вариант борьбы с отсутствием автоматического контроля времени жизни объекта. И, если человек хоть немного понимает, что такое указатель, объект и т.п., то у него не будет проблем с утечками.

Ты вообще программированием занимаешься или как Шеридан? Судя по утверждению — последнее.

kuj>>>>2. Делфи — динамический язык?

DOO>>>В достаточной мере.
G>>Не более динаический, чем С++. Можно везде писать (void*) и кастить при каждом обращении.
DOO>Да... Ну ладно — тогда создай мне экземпляр класса по его строковому имени в ран-тайме.
Создание класса по его строковому имени в рантайм не является признаком динамического языка.

DOO>Или хотя бы перечисли методы объекта в ран-тайме.


Перечисление методов объекта в рантайм не достаточно, чтоб для динамического языка.

DOO>Да, конечно, в Дельфи нету JIT'а, но и статическим строго типизированным его не назовешь.

У C# куда больше всяких плюшек: и extension methods, и анонимные классы и функции, и лямба-выражения, и атрибуты и многое другое, но он все еще остается статическим строго типизированным языком по-определению.

Медитируй http://en.wikipedia.org/wiki/Dynamic_programming_language

kuj>>>>А Борланд об этом знает?

DOO>>>Да уж наверное. Хотя в 6-й дельфи они стали на многие прикольные фишки выдавать ворнинги, что в .Net версии это уже не будет работать.
G>>Наверное ворнинги не от хорошей жизни.
DOO>Ворнинги от того, что в .Net банально многое нельзя, а значит программа не перенесется в среду .Net.

Что в .NET нельзя? Тебе самому не смешно?


[...остальная ахинея и софистика поскипана...]
Re[19]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 05.05.08 07:15
Оценка:
Здравствуйте, DOOM, Вы писали:

kuj>>Богатый интерфейс на яваскрипте? Флаг в руки, ветер в спину.


DOO>А в чем проблема? Можно и интерфейс. Можно и прямо COM объект настрочить на JS (точнее, конечно, это WSH)... Не знал?


Пример JS скрипта на WSH с "богатым интерфейсом" в студию.
Re[15]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 05.05.08 07:19
Оценка:
Здравствуйте, hattab, Вы писали:

G>>В .NET и Java у человека не будет проблем с утечками даже если он не понимает указатели.


H>Судя по тому, что ты тут пишешь, я вижу, что многого ты так и не понял...


Смешно слышать такое из твоих уст, hattab.
Re[8]: Чем вам всем не угодил Delphi?
От: ironwit Украина  
Дата: 05.05.08 07:22
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>Мне нужно нажать только =, в то время как тебе в Delphi — зажать shift, нажать 6, отжать shift, нажать = и это для, пожалуй, наиболее используемого оператора...


shift+Ж в англ раскладке? :
... << RSDN@Home 1.2.0 alpha 4 rev. 1084>>
Я не умею быть злым, и не хочу быть добрым.
Re[17]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 05.05.08 07:22
Оценка:
Здравствуйте, hattab, Вы писали:

S>>>Можно. Еще как можно. Более того, в Delphi можно сделать вызов метода, которого объект не поддерживает, и узнать об этом только в рантайме. В точности, как в JS. Вот этот код прекрасно скомпилируется:

H>Нет такой опции

Отсюда только следует, что Delphi не является ни статическим, ни динамическим языком, а некий жуткий сурогат.
Re[18]: Чем вам всем не угодил Delphi?
От: DOOM Россия  
Дата: 05.05.08 07:28
Оценка:
Здравствуйте, kuj, Вы писали:

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


S>>>>Можно. Еще как можно. Более того, в Delphi можно сделать вызов метода, которого объект не поддерживает, и узнать об этом только в рантайме. В точности, как в JS. Вот этот код прекрасно скомпилируется:

H>>Нет такой опции

kuj>Отсюда только следует, что Delphi не является ни статическим, ни динамическим языком

Ну наконец-то ты это понял...


kuj>, а некий жуткий сурогат.

А это уже субъективизм.
Re[15]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 05.05.08 07:37
Оценка:
Здравствуйте, DOOM, Вы писали:

G>>Любоую программу можно написать без объектов, только вопрос времени.

DOO>Неверно. Распространенное заблуждение, что ООП реально сильнее процедурного программирования — почитай как народ офигел, когда поняли, что никто не умеет эффективно проектировать при ООП подходе. И как потом разрабатывали UML — процесс был долгий и мучительный (если я правильно помню, только через 6 лет смогли родить первую версию UML). Т.е. плата за все плюсы ООП — гораздо более серьезная зависимость от правильного проектирования.
DOO>Популярная библиотека Gtk является чисто сишной — на одних struct'ах построена и ничего, народ пользуется.

Хотелось бы посмотреть как ты будешь чисто процедурно писать средних размеров корпоративную систему. Это из разряда "на JS можно написать мощный интерфейс пользователя".

Судя по твоей писанине в этом топике ты не являешься профессиональным программистом. Завязывай уже со этой ахинеей и пустозвонством.

G>>Что-то я не увидел примеров.

DOO>Еще раз:
DOO>Могу еще что-нибудь придумать...

Придумай. Еще посмеемся.

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

G>>Выделенное — офигенный недостаток.
DOO>Это by design (ну да, иногда недостаток), но в общем и целом это как раз, то, что надо.


DOO>>>И, если человек хоть немного понимает, что такое указатель, объект и т.п., то у него не будет проблем с утечками.

G>>В .NET и Java у человека не будет проблем с утечками даже если он не понимает указатели.
DOO>Но если он не понимает указатели, то до борьбы с утечками он просто не доберется — ничего толком работать не будет.
Какая взаимосвязь между пониманием что такое "указатель в Delphi" и борьбой с утечками в .NET/Java? Пиши ище!

DOO>>>Ворнинги от того, что в .Net банально многое нельзя, а значит программа не перенесется в среду .Net.

G>>В .NET можно сделать все, что можно в делфи.
DOO>В .Net нет прямого доступа к памяти, или я ошибаюсь?
Выкладывай для какой задачи тебе нужен прямой доступ к памяти.

G>>Глупость номер раз — Delphi динамический язык

DOO>Я тебе показал отсутствие строгой типизации? Показал. Значит не все так просто в датском королевстве. Не укладывается Delphi в узкое определение статического языка со строгой типизацией — есть там кое-какие фичи.
Делфи вообще никуда не укладывается. Если хочешь узнать что такое полноценный динамический язык посмотри на Ruby.

G>>Глупость номер два — использование вариантных типов везде.

DOO> Поясни. Кто тут и где про использование вариантных типов говорил?
Ты одной квотой выше.
Re[9]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 05.05.08 07:39
Оценка:
Здравствуйте, ironwit, Вы писали:

kuj>>Мне нужно нажать только =, в то время как тебе в Delphi — зажать shift, нажать 6, отжать shift, нажать = и это для, пожалуй, наиболее используемого оператора...


I>shift+Ж в англ раскладке? :


Почему я должен помнить какая у меня там активная раскладка, если все что мне нужно, это ввести оператор присваивания?
Re[17]: Чем вам всем не угодил Delphi?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 05.05.08 07:39
Оценка:
Здравствуйте, Sinclair, Вы писали:

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

G>>Да знаю я это. Пару страниц назад сам об этом писал. Причем какя-то опция компилятора отключает это.
G>>Но код
G>>Вызвоет ошибку компиляции, что есть проявление статической типизации.
S>Итого? Есть два кода. Один вызывает ошибку компиляции, другой не вызывает.
S>Какие выводы можно сделать? Ну, кроме того, что участники дискуссии очень плохо разбираются в системах типов?
Что-то это переходит в болтологию. Если язык поддерживает строгую типизацию, кроме случая использования типа Variant, то как его назвать?
Re[64]: Чем вам всем не угодил Delphi?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 05.05.08 07:49
Оценка:
Здравствуйте, hattab, Вы писали:

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


G>>>>Ну на C# я напишу

G>>>>
G>>>>  (obj as IInterface)//Если obj реализует IInterface, то вернется переменная этого типа, иначе будет null.
G>>>>

G>>>>При этом человек, который писал о класс объекта obj мог и не знать о существовании IInterface.
H>>>А что произойдет в момент компиляции, если obj не реализует IInterface?
G>>Ничего.

H>Ok. Если это так, то такое поведение оператора as это и есть запрос интерфейса от объекта (но не приведение оного). А теперь запроси от объекта другой объект (ты же сказал, что решение на интерфейсах вызвано кривостью Delphi).


Вникай, все это нормально компилируется
interface IA
{
 //...
}

interface IB
{
 //...
}

class A:IA
{
  //...
}

class B:IB
{
  //...
}

class C:A
{
  //...
}

//...

A a = new C();
(a as IA) //вернет ссылку на интерфейс IA
(a as IB) //вернет null

(a as A)  //вернет ссылку на класс A

(a as B)  //вернет null
(IA)a     //вернет ссылку на интерфейс IA
(B)a      //вылетит Exception
(IB)a     //вылетит Exception
Re[16]: Чем вам всем не угодил Delphi?
От: DOOM Россия  
Дата: 05.05.08 07:49
Оценка:
Здравствуйте, kuj, Вы писали:


kuj>Хотелось бы посмотреть как ты будешь чисто процедурно писать средних размеров корпоративную систему.

Хотелось бы посмотреть как ты будешь писать средних размеров корпоративную систему.
Метод решения выбирают под задачу и исходя из опыта команды. Да будет тебе известно, что Дейкстра так и не признал ООП — так для сведения.
Ядро Linux написано на C и его размеры могут поконкурировать даже не со средних размеров корпоративной системой
Весь Gnome написан на C (ну может за редким исключением).
Еще примеры надо?

kuj>Это из разряда "на JS можно написать мощный интерфейс пользователя".

Ну c JS слишком долго лазить за примерами, но вот Tk — есть и для tcl, есть и для перла. Приложений на Tk масса...

kuj>Судя по твоей писанине в этом топике ты не являешься профессиональным программистом. Завязывай уже со этой ахинеей и пустозвонством.

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


G>>>Что-то я не увидел примеров.

DOO>>Еще раз:
DOO>>Могу еще что-нибудь придумать...

kuj>Придумай. Еще посмеемся.

Мда... Все-таки недаром тебя в КСВ считают неадекватным оппонентом...


DOO>>Но если он не понимает указатели, то до борьбы с утечками он просто не доберется — ничего толком работать не будет.

kuj>Какая взаимосвязь между пониманием что такое "указатель в Delphi" и борьбой с утечками в .NET/Java? Пиши ище!
И еще раз возможность в этом убедиться.




DOO>>>>Ворнинги от того, что в .Net банально многое нельзя, а значит программа не перенесется в среду .Net.

G>>>В .NET можно сделать все, что можно в делфи.
DOO>>В .Net нет прямого доступа к памяти, или я ошибаюсь?
kuj>Выкладывай для какой задачи тебе нужен прямой доступ к памяти.
Сам подумай на досуге, а.



G>>>Глупость номер два — использование вариантных типов везде.

DOO>> Поясни. Кто тут и где про использование вариантных типов говорил?
kuj>Ты одной квотой выше.
Я показал пример, за это мне навесили: "использование вариантных типов везде" — логических ошибок совсем не видать?
Re[18]: Чем вам всем не угодил Delphi?
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.05.08 08:02
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>Богатый интерфейс на яваскрипте? Флаг в руки, ветер в спину.

Ты под богатым интерфейсом часом не вот это имеешь в виду? Или, может быть, maps.google.com?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[19]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 05.05.08 08:04
Оценка:
Здравствуйте, DOOM, Вы писали:

kuj>>Отсюда только следует, что Delphi не является ни статическим, ни динамическим языком

DOO>Ну наконец-то ты это понял...
kuj>>, а некий жуткий сурогат.
DOO>А это уже субъективизм.

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

К слову, Variant изначально был придуман Microsoft как тип данных COM. COM-объекты исторически писались почти исключительно на C++.

В нормальных строго типизированных ОО языках типа C# и Java у всех классов есть общий предок: object и java.lang.Object, соответственно, а так же полноценные метаданные и полноценный механизм reflection. Более того, у .NET в отличии от Delphi из мира dynamic languages взят еще оператор eval, позволяющий компилировать код непосредственно в рантайм. Язык остался строго типизированным, но получил многие элементы динамических языков: type inference, closures, duck typing (производная от dynamic typing: var something = new ClassA(...); ), eval, reflections.

Такой .NET язык как Boo пошел еще дальше и взял такие элементы динамических языков как: syntactic macros (в отличии от макросов в C++, макросы в Boo имеют больше черт, характерных макросам в динамических языках — они модифицируют compiler pipeline) и generators.

Полноценным динамическим языком в мире .NET на основе DLR станет IronRuby.
Re[18]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 05.05.08 08:07
Оценка: :)
Здравствуйте, gandjustas, Вы писали:

G>>>Да знаю я это. Пару страниц назад сам об этом писал. Причем какя-то опция компилятора отключает это.

G>>>Но код
G>>>Вызвоет ошибку компиляции, что есть проявление статической типизации.
S>>Итого? Есть два кода. Один вызывает ошибку компиляции, другой не вызывает.
S>>Какие выводы можно сделать? Ну, кроме того, что участники дискуссии очень плохо разбираются в системах типов?
G>Что-то это переходит в болтологию. Если язык поддерживает строгую типизацию, кроме случая использования типа Variant, то как его назвать?

Делфи как не называй все-равно фигня получится. Это как в анекдоте: " — мальчик или девочка?! — вырастет — само решит..."
Re[20]: Чем вам всем не угодил Delphi?
От: DOOM Россия  
Дата: 05.05.08 08:10
Оценка:
Здравствуйте, kuj, Вы писали:

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


kuj>>>Отсюда только следует, что Delphi не является ни статическим, ни динамическим языком

DOO>>Ну наконец-то ты это понял...
kuj>>>, а некий жуткий сурогат.
DOO>>А это уже субъективизм.

kuj>Это не субъективизм, а реалии жизни. Вместо того, чтоб сделать нормальный строго типизированный язык, взяли самую худшую черту динамического языка и прилепили ее в виде специального типа Variant.

В результате это существенно упростило некоторые задачи, что и позволило стать дельфи языком для непрограммистов. Значит с рыночной точки зрения решение было правильным

kuj>К слову, Variant изначально был придуман Microsoft как тип данных COM. COM-объекты исторически писались почти исключительно на C++.

К чему эта цепочка умозаключений? Мы вроде уже выяснили, что COM можно и на JS написать, было бы желание...


kuj>В нормальных строго типизированных ОО языках типа C# и Java у всех классов есть общий предок: object и java.lang.Object, соответственно, а так же полноценные метаданные и полноценный механизм reflection. Более того, у .NET в отличии от Delphi из мира dynamic languages взят еще оператор eval, позволяющий компилировать код непосредственно в рантайм. Язык остался строго типизированным, но получил многие элементы динамических языков: type inference, closures, duck typing (производная от dynamic typing: var something = new ClassA(...); ), eval, reflections.


kuj>Такой .NET язык как Boo пошел еще дальше и взял такие элементы динамических языков как: syntactic macros (в отличии от макросов в C++, макросы в Boo имеют больше черт, характерных макросам в динамических языках — они модифицируют compiler pipeline) и generators.


kuj>Полноценным динамическим языком в мире .NET на основе DLR станет IronRuby.

Ну замечательно... К чему это только все?
Re[17]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 05.05.08 08:15
Оценка: -3
Здравствуйте, DOOM, Вы писали:

kuj>>Хотелось бы посмотреть как ты будешь чисто процедурно писать средних размеров корпоративную систему.

DOO>Хотелось бы посмотреть как ты будешь писать средних размеров корпоративную систему.
DOO>Метод решения выбирают под задачу и исходя из опыта команды. Да будет тебе известно, что Дейкстра так и не признал ООП — так для сведения.
Дейкстра уж много лет как на пенсии. Так что он немного не в теме современных реалий программирования.

DOO>Ядро Linux написано на C и его размеры могут поконкурировать даже не со средних размеров корпоративной системой

DOO>Весь Gnome написан на C (ну может за редким исключением).
DOO>Еще примеры надо?
Давай пример корпоративной системы написанной полностью процедурными методами и хотя бы пару широкораспространенных прикладных приложений.

kuj>>Это из разряда "на JS можно написать мощный интерфейс пользователя".

DOO>Ну c JS слишком долго лазить за примерами,
Слив засчитан.

kuj>>Придумай. Еще посмеемся.

DOO>Мда... Все-таки недаром тебя в КСВ считают неадекватным оппонентом...
Это из серии "Мы Государь всея Руси, считаем тебя неадекватным оппонентом..."

DOO>>>>>Ворнинги от того, что в .Net банально многое нельзя, а значит программа не перенесется в среду .Net.

G>>>>В .NET можно сделать все, что можно в делфи.
DOO>>>В .Net нет прямого доступа к памяти, или я ошибаюсь?
kuj>>Выкладывай для какой задачи тебе нужен прямой доступ к памяти.
DOO>Сам подумай на досуге, а.
Слив засчитан.

G>>>>Глупость номер два — использование вариантных типов везде.

DOO>>> Поясни. Кто тут и где про использование вариантных типов говорил?
kuj>>Ты одной квотой выше.
DOO>Я показал пример, за это мне навесили: "использование вариантных типов везде" — логических ошибок совсем не видать?
Слив засчитан. В динамических языках все типы динамические.
Re[21]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 05.05.08 08:18
Оценка:
Здравствуйте, DOOM, Вы писали:

kuj>>Это не субъективизм, а реалии жизни. Вместо того, чтоб сделать нормальный строго типизированный язык, взяли самую худшую черту динамического языка и прилепили ее в виде специального типа Variant.

DOO>В результате это существенно упростило некоторые задачи, что и позволило стать дельфи языком для непрограммистов. Значит с рыночной точки зрения решение было правильным

Variant позволил Делфи стать языком для непрограммистов? /сползаю под стол

kuj>>В нормальных строго типизированных ОО языках типа C# и Java у всех классов есть общий предок: object и java.lang.Object, соответственно, а так же полноценные метаданные и полноценный механизм reflection. Более того, у .NET в отличии от Delphi из мира dynamic languages взят еще оператор eval, позволяющий компилировать код непосредственно в рантайм. Язык остался строго типизированным, но получил многие элементы динамических языков: type inference, closures, duck typing (производная от dynamic typing: var something = new ClassA(...); ), eval, reflections.


kuj>>Такой .NET язык как Boo пошел еще дальше и взял такие элементы динамических языков как: syntactic macros (в отличии от макросов в C++, макросы в Boo имеют больше черт, характерных макросам в динамических языках — они модифицируют compiler pipeline) и generators.


kuj>>Полноценным динамическим языком в мире .NET на основе DLR станет IronRuby.

DOO>Ну замечательно... К чему это только все?

К тому, что Delphi не является динамическим языком. До тебя так же туго доходит, как и для hattab`а. Впрочем, может ты его альтер-эго?
Re[19]: Чем вам всем не угодил Delphi?
От: kuj  
Дата: 05.05.08 08:22
Оценка:
Здравствуйте, Sinclair, Вы писали:

kuj>>Богатый интерфейс на яваскрипте? Флаг в руки, ветер в спину.

S>Ты под богатым интерфейсом часом не вот это имеешь в виду? Или, может быть, maps.google.com?
Часом нет. Речь шла о Windows, а не о Web. А то, может, давайте еще Silverlight сюда приплетем.
Re[65]: Чем вам всем не угодил Delphi?
От: hattab  
Дата: 05.05.08 08:23
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>>>>>Ну на C# я напишу

G>>>>>
G>>>>>  (obj as IInterface)//Если obj реализует IInterface, то вернется переменная этого типа, иначе будет null.
G>>>>>

G>>>>>При этом человек, который писал о класс объекта obj мог и не знать о существовании IInterface.
H>>>>А что произойдет в момент компиляции, если obj не реализует IInterface?
G>>>Ничего.

H>>Ok. Если это так, то такое поведение оператора as это и есть запрос интерфейса от объекта (но не приведение оного). А теперь запроси от объекта другой объект (ты же сказал, что решение на интерфейсах вызвано кривостью Delphi).


G>Вникай, все это нормально компилируется

G>
G>interface IA
G>{
G> //...
G>}

G>interface IB
G>{
G> //...
G>}

G>class A:IA
G>{
G>  //...
G>}

G>class B:IB
G>{
G>  //...
G>}

G>class C:A
G>{
G>  //...
G>}

G>//...

G>A a = new C();
G>(a as IA) //вернет ссылку на интерфейс IA
G>(a as IB) //вернет null

G>(a as A)  //вернет ссылку на класс A

G>(a as B)  //вернет null
G>(IA)a     //вернет ссылку на интерфейс IA
G>(B)a      //вылетит Exception
G>(IB)a     //вылетит Exception
G>


Вникать тут не во что. Я тебя попросил вполне конкретный пример: по аналогии с запросом ICanFly, сделать запрос объекта (без использования интерфейсов, это же, с твоих слов, криво). Ты мне приведения типов показываешь Это далеко не одно и то же. Ломай стены в своей голове.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.