Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
Worobjoff c127В таблице везде где "реализуется в библиотеке классов" стоит плюс для D и минус для остальных языков. А это - дискриминация! Мир вообще несправедливая штука с точки зрения большей части населения планеты. WorobjoffИ как это, то что реализовано в библиотеке framework, не присуще языку C#? Абсурд. Но ведь по-существу автор прав, есть язык, есть библиотеки, это разные вещи. Можно спорить только о том, имеет ли смысл это различие подчеркивать, либо же оно практически неощутимо. Worobjoff Нет множественного наследования. Какой же это D? Это C-- (си минус-минус) Есть такое дело, нет его. Тут уже ответили, вопрос темный, я не специалист по ООП-у, ничего сказать не могу. Зато там есть много чего другого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 02:39 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
предел вложения цитат уже достигнут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 05:56 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
Timm Кстати, попутный вопрос - реализовали ли в джаве возможность делегировать реализацию интерфейса? не понял смысл. для чего это? Это единственная возможность хоть как-то изобразить множественное наследование с помощью интерфейсов. Мы можем создать один класс и без тупого копирования кода использовать его для реализации нескольких интерфейсов в разных классах. Timmabstract superclass по-моему должен помочь. Чем? Допустим, я хочу добавить метод toXML() к классам BigDecimal, BigInteger, URL и JButton. Какой именно abstract superclass мне следует создать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 12:00 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
softwarerЧем? Допустим, я хочу добавить метод toXML() к классам BigDecimal, BigInteger, URL и JButton. Какой именно abstract superclass мне следует создать? И что, он со всеми типами одинаково работать будет что-ли? А чем тогда XML.toXML() хуже? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 12:10 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
DarkSquidИ что, он со всеми типами одинаково работать будет что-ли? Как раз нет. Обратите внимание на приведенный список классов - с BigDecimal и BigInteger он запросто может работать одинаково, а вот для JButton скорее всего потребуется отдельная реализация. Разумеется, на уровне "методов в одну строку" разница невелика, но принцип вполне иллюстрируется. Без таких механизмов придется делать достаточно искусственную структуру либо таки копировать код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 12:19 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
softwarer Timm Кстати, попутный вопрос - реализовали ли в джаве возможность делегировать реализацию интерфейса? не понял смысл. для чего это? Это единственная возможность хоть как-то изобразить множественное наследование с помощью интерфейсов. Мы можем создать один класс и без тупого копирования кода использовать его для реализации нескольких интерфейсов в разных классах. Timmabstract superclass по-моему должен помочь. Чем? Допустим, я хочу добавить метод toXML() к классам BigDecimal, BigInteger, URL и JButton. Какой именно abstract superclass мне следует создать? поточнее: как добавить? эти классы, в общем, принципиально отличны, и использование одной реализации метода toXML() для меня является загадкой. какая может быть в этом методе логика, общая для всех выше перечисленных классов? поможет, я думаю, adapter, wrapper, etc... да, придется подписать. но не так уж и много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 12:21 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
softwarer DarkSquidИ что, он со всеми типами одинаково работать будет что-ли? Как раз нет. Обратите внимание на приведенный список классов - с BigDecimal и BigInteger он запросто может работать одинаково, а вот для JButton скорее всего потребуется отдельная реализация. Разумеется, на уровне "методов в одну строку" разница невелика, но принцип вполне иллюстрируется. Без таких механизмов придется делать достаточно искусственную структуру либо таки копировать код. чем эта структура будет искусственной - я не понимаю... можно сделать примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 12:33 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
Timmчем эта структура будет искусственной - я не понимаю... "... либо копировать код". При такой структуре придется в каждом классе писать: Код: plaintext 1. 2. что, если интерфейс содержит десять-двадцать методов, начнет несколько напрягать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 13:10 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
softwarer Timmчем эта структура будет искусственной - я не понимаю... "... либо копировать код". При такой структуре придется в каждом классе писать: Код: plaintext 1. 2. зачем??? вы не поняли меня: именно в этом методе должна быть логика преобразования сущностей типа "число" в Document. какая это будет логика - хрен знает. но факт: она будет использовать абстрактный(-ые) метод(ы), определенный(-е) в классе, расширяющем XMLizableNumber. и все. если вы хотите сказать, что логика toXML в XMLizableNumber и XMLizableURL будет одинаковой... то для меня это выглядит просто нелогично. она может быть схожей, с этим я согласен. но в один прекрасный момент она может поменяться, причем кардинально. если уж очень хочется, чтобы в XMLizableURL использовалась логика toXML от XMLizableNumber - то, как я говорил выше, адаптер поможет. причем это будет не копирование кода. это будет дополнительный , весьма логичный код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 13:32 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
Timmзачем??? Для соответствия постановке задачи: Код: plaintext Расшифрую: нужны классы MyBigDecimal, MyBigInteger, MyURL итп, обладающие интерфейсом XMLizable. Timmвы не поняли меня: Боюсь, Вы ошибаетесь. Я понял Вас; более того, Вы построили именно ту структуру классов, которая нужна для решения этой задачи. Остается сделать единственный шаг: сказать, что вот этот вот объект класса XMLizableNumber реализует интерфейс XMLizable в моем классе MyBigInteger. Если нет делегирования, придется писать тупые stub'ы типа приведенного выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 13:54 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
ок. пойдем с другого конца :) пример+небольшое описание семантики "делегирования реализации интерфейса" в Delphi можно? ну или ссылку (ничего внятного в гугле не нашел)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 14:21 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
2 softwarer прошу прощение за вторжение - маленькое замечание. глупые стабы или нет - вопрос отчасти вкуса. там где они однообразны - это действительно раздражает. Но эта лишь малая часть проблемы. Настоящая проблема - требование стабильности интерфейса. Если сразу не додумал, а потом захотел добавить метод к объявлению интерфейса или поменять его сигнатуру - вот тут начинается настоящая проблема. В любом из вышеозначенных случаев. Дописать или изменить реализацию требуется сразу во всех классах, реализующих интерфейс. В больших проектах это может быть физически неосуществимо за разумное время. А пока этой переписи/дозаписи не произойдет - проект не скомпилируется. кстати, то, что Вы называете делегированием, на самом деле должно называться агрегированием, по смыслу вашего текста. По крайней мере так это назывется в COM :) Делегирование с "подкруткой", кстати, тоже может решить тему, в виде объявления внутреннего члена класса, ответственного за реализацию необходимого интерфейса, реализации этого интефейса в единственном классе, с последующей явной отдачей клиенту этого внутреннего члена публичным методом. Таким способом на языках "синтаксически" не поддерживающих COM-агрегирования (Visual Basic), может развязываться "интефейсный узел". 2Timm интерфейсы, конечно, помогают в создании повторно используемого кода. Это код использования базовых классов проекта в утилитах типа сортировок, поисков и чего-то подобно "генеричного". Однако доля этого такого кода в проекте как правило невелика. Жесткость по отношению к изменениям, которую интерфейсы придают проекту, необходимость внесения множественных изменений в код, заставляет "сильно думать", прежде чем объявить тот или иной публичный интерфейс. Тем самым ограничивая область его применения. И уж совсем никак не связаны с повторным использованием кода реализации. Тут и приходится придумывать Adapter-ы. Это, однако, "общепрограммисткий образец", который нет способа притянуть к разговору - кто кого лучше, и Adapter, в данном случае, всего лишь способ заметания пыли под ковер. Своеобразная попытка ограничения волны распространения измений в пректе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 14:32 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
softwarer Ваша задача добавления метода к классам BigDecimal, BigInteger и даже 'Big*' (!!!) и т.д. может элегантно решиться с помощью AspectJ (использование аспектно-ориентированного программирования - просто объявляется что с данного момента все классы jaba.*.Big* являются наследниками интерфейса A (код самих классов не меняется)) Интересно, можно ли в Delphi добавить метод к классам 'Big*' ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 14:37 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
Timmпример+небольшое описание семантики "делегирования реализации интерфейса" в Delphi можно? Я, кстати, нигде не говорил, что в дельфе оно есть :)) Набросаю извращенный пример, просто чтобы коротко уместить возможности. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. По сути, конечно, та же самая генерация stub-ов, но компилятор любезно берет ее на себя. Интересно, когда Алекс таки сделает нормальную синтаксическую раскраску. Я ему показывал проблемы и кидал необходимый код еще год назад. Кстати, если здесь в комментариях внизу заменить круглые скобки на фигурные, будет еще один давным-давно сообщенный Алексу глюк форума :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 14:46 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
jdev333 Ваша задача добавления метода к классам BigDecimal, BigInteger и даже 'Big*' (!!!) и т.д. может элегантно решиться с помощью AspectJ (использование аспектно-ориентированного программирования - просто объявляется что с данного момента все классы jaba.*.Big* являются наследниками интерфейса A (код самих классов не меняется)) Угу. Я потихоньку делаю для себя компилятор, где запланирована похожая возможность. Правда, звездочек поддерживать не собираюсь. Но задача собственно не в этом - меня не столь удручает необходимость явно унаследоваться, особенно в дельфе, где для этого не надо городить огород с файлами. Задача в том, чтобы можно было наследовать реализацию методов пользуясь обычным механизмом. Если названная технология это решает - спасибо, является определенным ответом на вопрос. jdev333 Интересно, можно ли в Delphi добавить метод к классам 'Big*' ? В дельфе или в дельфеподобных поделках? :) Я бы сказал, в нормально компилируемых языках это не особо нужная возможность, поскольку не удастся нормально реализовать этот механизм для виртуальных методов. Для статических - sugar-ок, хотя иногда полезный. Например, в той же яве часто хочется поправить String или Vector. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 14:59 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
глупыйглупыйглупые стабы или нет - вопрос отчасти вкуса. Имхо, stub-ы - глупы по определению. Отчасти такая позиция вызвана тем, что я куда трепетнее среднего отношусь к качеству программного кода. С моей точки зрения, программный код должен быть максимально осмысленным, описывающим нетривиальную функциональность программы, и не должен быть замусорен. Stub-ы, код, который может быть автосгенерен - должен быть автосгенерен, причем скрытым от программиста образом, не мешаться с осмысленным кодом. Например, в коде Код: plaintext 1. 2. я в двух строках вижу всю необходимую информацию. В коде типа Код: plaintext 1. 2. 3. 4. я эту "пикантную подробность" запросто могу элементарно не заметить. глупыйглупыйНастоящая проблема - требование стабильности интерфейса. Это отдельная тема. Но отметим, что такое делегирование, помимо прочего, как раз снижает стоимость ее решения. Впрочем, я бы предпочел не уходить уж очень глубоко в обсуждение именно интерфейсов. Напомню, все это вытекло из единственно постановки вопроса, что интерфейсы не могут беспроблемно заменить множественное наследование. глупыйглупыйкстати, то, что Вы называете делегированием, на самом деле должно называться агрегированием, по смыслу вашего текста. По крайней мере так это назывется в COM Я не в курсе COM, но если создатели этой технологии решили переобозвать по-своему то, что в дельфе называлось делегированием.... Собственно, слововольности - известная претензия к MS, как с тем же кластером. После чего оказывается, что то ли у них есть то, чего на самом деле нет (тот же кластер), то ли оказывается, что они изобрели что-то новое (как здесь :) глупыйглупыйс последующей явной отдачей клиенту этого внутреннего члена публичным методом. Это да, но это уже искусственный метод, разрушающий пользователю класса взгляд на этот класс, да и практически часто неудобный. Одно дело, когда у пользователя есть класс Код: plaintext другое - когда есть Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 15:14 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
глупыйглупый2 softwarer прошу прощение за вторжение - маленькое замечание. глупые стабы или нет - вопрос отчасти вкуса. там где они однообразны - это действительно раздражает. Но эта лишь малая часть проблемы. Настоящая проблема - требование стабильности интерфейса. Если сразу не додумал, а потом захотел добавить метод к объявлению интерфейса или поменять его сигнатуру - вот тут начинается настоящая проблема. В любом из вышеозначенных случаев. Дописать или изменить реализацию требуется сразу во всех классах, реализующих интерфейс. В больших проектах это может быть физически неосуществимо за разумное время. А пока этой переписи/дозаписи не произойдет - проект не скомпилируется. кстати, то, что Вы называете делегированием, на самом деле должно называться агрегированием, по смыслу вашего текста. По крайней мере так это назывется в COM :) Делегирование с "подкруткой", кстати, тоже может решить тему, в виде объявления внутреннего члена класса, ответственного за реализацию необходимого интерфейса, реализации этого интефейса в единственном классе, с последующей явной отдачей клиенту этого внутреннего члена публичным методом. Таким способом на языках "синтаксически" не поддерживающих COM-агрегирования (Visual Basic), может развязываться "интефейсный узел". 2Timm интерфейсы, конечно, помогают в создании повторно используемого кода. Это код использования базовых классов проекта в утилитах типа сортировок, поисков и чего-то подобно "генеричного". Однако доля этого такого кода в проекте как правило невелика. Жесткость по отношению к изменениям, которую интерфейсы придают проекту, необходимость внесения множественных изменений в код, заставляет "сильно думать", прежде чем объявить тот или иной публичный интерфейс. Тем самым ограничивая область его применения. И уж совсем никак не связаны с повторным использованием кода реализации. Тут и приходится придумывать Adapter-ы. Это, однако, "общепрограммисткий образец", который нет способа притянуть к разговору - кто кого лучше, и Adapter, в данном случае, всего лишь способ заметания пыли под ковер. Своеобразная попытка ограничения волны распространения измений в пректе. 1) использование интерфейсов в базовых классах. это просто смешно. их можно (и нужно в соответствующих случаях) использовать где угодно, на любом уровне приложения. 2) "сильно думать" - а куда ж без этого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 15:34 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
по части синтаксической выразительности до "пикантных подробностей" - согласен. Вообще-то среда разработки может помогать "перечислять" методы реализации, но это – детали, и, в целом - не сильно чего меняет. по поводу агрегации. Именно так называется в COM техника, смысл которой Вы изобразили в посте < сегодня, 14:46 > речь идет о том, что TTarget в своей виртуальной таблице методов напрямую размещает адреса функций (полностью или частично), принадлежащих классу TImplementator (если частично, то вперемежку с методами собственной реализации. В MSDN есть статьи, как это делать на C++. Про Delphi z не знаю ничего, практически, а любимый мною Classic VB этого в своем синтаксисе точно не держит. Однако, описаны в тырнете и реализуемы искусственные конструкты, рождающие такого сорта объекты кодом. Правда, с ограничениями, и, строго говоря, как правило с нарушением COM-соглашений по доступности получения указателя любого «объявленного» интерфейса объекта от любого указателя на любой интерфейс этого объекта. Но тем не менее это технически возможно. С учетом того, что Delphi автоматизацию поддерживает – подобного сорта техника кем-нибудь да была выписана для Delphi. Это да, но это уже искусственный метод, разрушающий пользователю класса взгляд на этот класс, да и практически часто неудобный. Одно дело, когда у пользователя есть класс Я бы сказал – что это «зависимо от ситуации». Какая такая целостность в использующем коде разрушается от того, что класс, вместо того, чтобы непосредственно на себе реализовывать всякие там Итератор, Компаратор и далее по фантазии, хранит в своих нутрях специально для этого предназначенный класс. В каких-то ситуациях – просто единственный экземпляр на проект. В любом случае это явный способ локализации «каскадно-интерфейсных проблем» и пресловутой модуляризации (повторного использования) кода. В данном случае – кода реализации. Ну не универсален и не в 100% случаев применим. В общем, тут начинает напрашиваться шизофренический интерфейс с методом гетИтератор. Но большей частью это обходится. ЗЫ Еще раз извините за не планировавшееся вторжение. Как бы не моего глупого ума дело столь высокие полеты мысли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 16:03 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
2 Timm базовых в данном случае не в смысле иерархии наследования, а в смысле "классов проектов любого уровня", так или иначе отображающих специфику проекта. Бизнес-классов - тоже вроде занятый термин. Не знаю как назвать - пользовательских классов, используемых в универсальных утилитарных кодах проекта, как правило, в виде стандартных интерфейсов. Как не назови - а тему повторного использования кода реализации они (интерфейсы) сами по себе не решают, потому что не предназначены для ее решения. По определению отсутствия реализации в базовом интерфейсном классе. Плюс повторного применения кода, использующего интерфейсы (типа Итератор, Компаратор, Компарабле) для реализации универсального алгоритма (типа поиска элемента) всегда стоит против минуса множественного изменения кода в реализующих классах. Хорошо, когда библиотеку писали, отлаживали и использовали 10-15 лет. Можно надеяться на устойчивость таких, выверенных временем и практикой интерфейсов. Если же Вы творите интерфейсы для своего проекта сами, то они будут меняться вместе с Вами. Не знаю, почему здесь не видно проблемы. Которая частично решается методом применения как раз не везде, а в специально отведенных для такой реализации классов. С последующим делегированием им во всех прочих("рабочих", "бизнес", "пользовательских" или любой удачно подобранное слово ) классах работы по представлению интерфейсов для утилитарного кода. :) ушел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 16:37 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
глупыйглупыйпо части синтаксической выразительности до "пикантных подробностей" - согласен. Вообще-то среда разработки может помогать "перечислять" методы реализации, но это – детали, и, в целом - не сильно чего меняет. Имхо, лучше решать эту задачу языком, а не средой разработки. IDE же, предлагая инструменты для облегчения генерации тупого кода, потом для сворачивания тупого кода, в чем-то поощряет то, что лучше подавить в зародыше. глупыйглупыйречь идет о том, что TTarget в своей виртуальной таблице методов напрямую размещает адреса функций (полностью или частично), принадлежащих классу TImplementator (если частично, то вперемежку с методами собственной реализации. Честно говоря, я не задавался вопросом, как именно дельфа реализует описанный механизм, но подозреваю, что именно с помощью потайных stub-ов. Причина этого - в двух деталях, которые осложняют реализацию, особенно если не делать виртуальную таблицу методом конкретного объекта. Первая причина - в вызванный таким образом метод нужно передать корректный указатель Self/this (используемого объекта, а не TTarget). Вторая - в том, что используемый для делегации объект или интерфейс можно переприсвоить в любой момент времени, и придется отлавливать этот момент и на ходу менять виртуальную таблицу. глупыйглупыйЯ бы сказал – что это «зависимо от ситуации». Какая такая целостность в использующем коде разрушается от того, что класс, вместо того, чтобы непосредственно на себе реализовывать всякие там Итератор, Компаратор и далее по фантазии, хранит в своих нутрях специально для этого предназначенный класс. Никаких, если он "хранит в нутрях". Если же "отдает наружу методом" - согласен, зависит от; для итератора и подобных классов, которые могут существовать в разных вариантах в одном классе это удобно и естественно; отдавать же наружу ИксЭмЭлизатор вряд ли будет удобно и красиво. В целом - мою формулировку, безусловно, следует поправить на "может разрушить". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 16:54 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
глупыйглупыйХорошо, когда библиотеку писали, отлаживали и использовали 10-15 лет. Можно надеяться на устойчивость таких, выверенных временем и практикой интерфейсов. Если же Вы творите интерфейсы для своего проекта сами, то они будут меняться вместе с Вами.Очень даже согласен! Ведь Мартинами Фаулерами не рождаются. С первого самоучителя. А пока таким станешь... Ну не странно ли? Программисты VB чаще задумываются о качестве повторного использования кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2005, 16:07 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
Delphi перешла на net, которая суть - что-то вроде мелкософтовая java? Delphi - net JBuilder - java а вы спорите... Мне кажется время решило. Сейчас - это противостояние net и java. ps imho 1. Delphi imho очень многое взяло из java (pascal+идеи java = delphi) 2. Net - это неудача MS с Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2005, 06:35 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
gsi___ps imho 1. Delphi imho очень многое взяло из java (pascal+идеи java = delphi) 2. Net - это неудача MS с Java. ObjectPascal вообще то был взят с паскаля Вирта. Java была взята с Оберона Вирта. ObjectPascal - это язык + компоненты. Java и .NET - это платформа + язык + компоненты. Вы бы хоть историю ради интереса почитали, когда появилось Delphi и когда появилась Java, перед тем, как делать глубокомысленные выводы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2005, 07:31 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
Вообще как ни странно если почитать историю - Borland Delphi 1 в феврале 1995 появился Жаба тоже где - то в начале 1995 вышла в свет (а как исследоательский проект - 94) Хотя конечно вряд ли что-то с java брали при создании Delphi. Object Pascal - вообще украденный trademark, ибо Object Pascal был у Apple еще до Багланда :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2005, 11:53 |
|
||
|
Delphi vs Java2
|
|||
|---|---|---|---|
|
#18+
ИсторикBorland Delphi 1 в феврале 1995 появился Жаба тоже где - то в начале 1995 вышла в свет (а как исследоательский проект - 94) Хм. А дельфу начали писать в феврале 95-го и тогда же завершили? Я не знаю точной даты начала этого проекта, но говорили о ней (до выхода) сколь помнится года полтора-два. Хотя конечно вряд ли что-то с java брали при создании Delphi. Если говорить про историю развития обоих проектов - наверняка на уровне подсмотренных относительно мелких идей найдется достаточно много, как и у любых параллельно развивающихся вещей. Из концептуальных вещей - лично я не назову какой-либо идеи, которая именно в Delphi & Java реализована "особенно похоже" - более похоже, чем в Delphi & что-нибудь другое либо Java & что-нибудь другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2005, 18:19 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=33386768&tid=1346901]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 263ms |
| total: | 381ms |

| 0 / 0 |
