Расскажите профессионально, чем Java разработка быстрее C++
От: flashinc  
Дата: 31.05.07 16:47
Оценка:
Здравствуйте,
мне хотелось бы услышать ответ, чем именно разработка на десктопной Java (SE) быстрее разработки на C++ ??
Для конкретики возьмем, скажем, Microsoft Visual C++. Вопрос не про язык, именно про скорость разработки, про утилиты, библиотеки, методики итд..
Говорят что разработка на java быстрее и дешевле. Так ли это?

большая просьба! Не устраивать неинформативный флейм Java vs C++ !!!

01.06.07 12:53: Перенесено модератором из 'Java' — Blazkowicz
04.06.07 10:11: Перенесено из 'Философия программирования'
Re: Расскажите профессионально, чем Java разработка быстрее
От: Baudolino  
Дата: 31.05.07 17:32
Оценка: 1 (1) +7
Здравствуйте, flashinc, Вы писали:

F>Здравствуйте,

F>мне хотелось бы услышать ответ, чем именно разработка на десктопной Java (SE) быстрее разработки на C++ ??
F>Для конкретики возьмем, скажем, Microsoft Visual C++. Вопрос не про язык, именно про скорость разработки, про утилиты, библиотеки, методики итд..
F>Говорят что разработка на java быстрее и дешевле. Так ли это?

1. Реальная, а не условная стандартизация (в отличие от Java стандарт С++ допускает очень много вольностей).
2. Простота языка и наличие множества типовых решений. Средства автоматического управления памятью (в Java утечки памяти связаны исключительно с ошибками в архитектуре; в C++ труднообнаружимая утечка может стать следствием невнимательности).
3. Есть мощное API для получения информации о типе во время исполнения (Reflection), к тому же усиленное введением в Java 5 аннотаций. С учетом возможностей по кодогенерации и созданию новых типов во время исполения программы, может сильно экономить время на написание кода.
4. Огромное количество библиотек и мощных фреймворков. Они быстро плодятся и развиваются, т.к. редко возникает необходимость в портировании (платформно-зависимый код встречается нечасто).
5. В связи с 2, упрощается создание мощной среды разработки. Анализ и рефакторинг кода, управление зависимостями, возможности поиска и динамической подсветки — уже существующие возможности в Eclipse или Intellij IDEA перечислять можно долго. Ни одна среда разработки для С++ и близко не подобралась к такому.
6. Возможно, что-то забыл. Во всяком случае, я наблюдал, как коллеги пересаживались с С++ (с многолетним опытом) на Java и их производительность увеличивалась в разы.
Re: Расскажите профессионально, чем Java разработка быстрее
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 31.05.07 17:41
Оценка: +1
Здравствуйте, flashinc, Вы писали:

Вот здесь про Java все лаконично собрано в одну кучу: Технология Java для новичков

Лично мне управляемые платформы (Java/.NET) нравятся тем, что на этапе разработки компилятор дает мне больше времени на бизнес-логику приложения, т.е. на то, что собственно и нужно заказчику, в то время как во время опытов с C++, к примеру, приходилось "бороться" с памятью, т.е. речь об автоматическом управлении памятью (сборщике мусора) и других функции контроля исполняемых сред.

Именно Java, нежели .NET, предпочитаю, потому что это уже зарекомендовавшая себя состоявшаяся платформа программирования бизнес-приложений. Говорю это абсолютно безпредвзято, потому как занимаюсь и Java, и C# в силу сложившихся исторических абстоятельств в отношении фифти-фифти, и вижу достоинства-недостатки обеих платформ. .NET пока еще слишком молод и жадно впитывает готовые решения других: это и практическая идентичность синтаксиса флагманского языка .NET — C# языку Java, это и переписывание библиотек, платформ, некогда разработанных для Java, на .NET (Spring .NET, nHibernate, nUnit, Aspect# и т.д. и т.п. — слизано, причем, как говорят многие, пока еще не очень хорошо) и т.п. С другой стороны, C# имеет несомненные синтаксические достоинства: обобщенное программирование времени выполнения, замыкания, делегаты-события, выведение типов локальных переменных и прочий синтаксический сахар.
Re: Расскажите профессионально, чем Java разработка быстрее
От: Cyberax Марс  
Дата: 31.05.07 18:43
Оценка: 2 (2) +1
Здравствуйте, flashinc, Вы писали:

F>мне хотелось бы услышать ответ, чем именно разработка на десктопной Java (SE) быстрее разработки на C++ ??

В основном тем, что Java не нужно изучать в течение 3 лет для того, чтобы не делать глупых ошибок.

А так... Некоторые вещи на С++ делаются не медленнее, чем на Java.
Sapienti sat!
Re[2]: Расскажите профессионально, чем Java разработка быст
От: flashinc  
Дата: 31.05.07 19:43
Оценка: -1
Вы знаете, я все-так много слышу про синтаксис. И еще много "генерализации", типа "много библиотек", "устоявшийся фреймворк"... А таки можно конекртное услышать?
Интересует вообще не сервер и не "бизнес". Каких библиотек? Чем Java фреймворк лучше
тех же скажем VCL? Чем он "устоявшееся"? Или лучше, чем какая-нибудь Crt, MFC, WTL, Qt, Stl, boost?

Что именно удешевляет разработку. Что вот конкретно в сравнении с той же Visual Studio или Дельфёй/Билдером можно взять и сделать быстрее? Как-нибудь "на пальцах" бы кто-нибудь рассказал бы.. И почему это было б быстрее и дешевле.

Я потому взываю к конкретике, потому что хотелось бы наконец услышать конкретику. Не сравнение синтаксиса. Ну вот пример — если нужно сляпать формочку с полем ввода и кнопкой то чем java будет быстрее чем взять visual basic или delphi?

Огромная просьба, опять же, не раздаражаться, я спрашиваю от незнания. Я не совсем новичок в программировании (пишу не на java).
Re[2]: Расскажите профессионально, чем Java разработка быст
От: flashinc  
Дата: 31.05.07 19:53
Оценка:
Прежде всего, огромное, душевное спасибо!!!!

B>1. Реальная, а не условная стандартизация (в отличие от Java стандарт С++ допускает очень много вольностей).


Стандарт языка? А что это дает? Вот тот же Pascal или Ada — они еще жестче по синтаксису, но лучше ли? Почему тогда Java лучше них?

B>2. Простота языка и наличие множества типовых решений. Средства автоматического управления памятью (в Java утечки памяти связаны исключительно с ошибками в архитектуре; в C++ труднообнаружимая утечка может стать следствием невнимательности).


Ну это всё про язык опять же...

B>3. Есть мощное API для получения информации о типе во время исполнения (Reflection), к тому же усиленное введением в Java 5 аннотаций. С учетом возможностей по кодогенерации и созданию новых типов во время исполения программы, может сильно экономить время на написание кода.


А можно пример когда этот Reflection пригодился бы, и получилось что-то такое, что нельзя на конкурирующих языках?


B>4. Огромное количество библиотек и мощных фреймворков. Они быстро плодятся и развиваются, т.к. редко возникает необходимость в портировании (платформно-зависимый код встречается нечасто).


Дайте примеры библиотек чтобы сразу уж знать

B>5. В связи с 2, упрощается создание мощной среды разработки. Анализ и рефакторинг кода, управление зависимостями, возможности поиска и динамической подсветки — уже существующие возможности в Eclipse или Intellij IDEA перечислять можно долго. Ни одна среда разработки для С++ и близко не подобралась к такому.


А delphi 2007 скажем? или свежая Visual Studio?

B>6. Возможно, что-то забыл. Во всяком случае, я наблюдал, как коллеги пересаживались с С++ (с многолетним опытом) на Java и их производительность увеличивалась в разы.


А на каких конкретно участках, ну, что делали?
Re[3]: Расскажите профессионально, чем Java разработка быст
От: den123 Израиль http://den123.smugmug.com
Дата: 31.05.07 20:24
Оценка:
Здравствуйте, flashinc, Вы писали:

...
B>>3. Есть мощное API для получения информации о типе во время исполнения (Reflection), к тому же усиленное введением в Java 5 аннотаций. С учетом возможностей по кодогенерации и созданию новых типов во время исполения программы, может сильно экономить время на написание кода.

F>А можно пример когда этот Reflection пригодился бы, и получилось что-то такое, что нельзя на конкурирующих языках?


В одном из проектов мы применили Reflection для динамического создания объектов. Исходной информацией является XML, результатом — готовый объект, созданный на лету.

Собственно код Reflection занимает строк 10.

Сделано это было давно, однако на протяжении многих лет список "рефлектуемых" классов увеличился во много раз и это без каких либо изменений в методе "рефлектующем" классы!

Не уверен, что это можно сделать только на Java, но сомневаюсь, что это можно сделать также легко на других языках.
WBR — Yuriy
Re[3]: Расскажите профессионально, чем Java разработка быст
От: Baudolino  
Дата: 31.05.07 21:47
Оценка: +1
F>Стандарт языка? А что это дает? Вот тот же Pascal или Ada — они еще жестче по синтаксису, но лучше ли? Почему тогда Java лучше них?
Ява — не язык, а платформа. Намного проще работать, когда у тебя действительно определены null, размер типов, строки и т.д. Если вы не думаете о необходимости портировать код, а просто следуете стандарту, вы пишете код быстрее. Сравнение Java с паскалем и адой — тема для отдельного разговора.

B>>3. Есть мощное API для получения информации о типе во время исполнения (Reflection), к тому же усиленное введением в Java 5 аннотаций. С учетом возможностей по кодогенерации и созданию новых типов во время исполения программы, может сильно экономить время на написание кода.

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

B>>4. Огромное количество библиотек и мощных фреймворков. Они быстро плодятся и развиваются, т.к. редко возникает необходимость в портировании (платформно-зависимый код встречается нечасто).

F>Дайте примеры библиотек чтобы сразу уж знать
Оmfg. Вы осознаете вообще, что просите? Зайдите на sourceforge, eclipse.org или apache.org и полюбуйтесь.

B>>5. В связи с 2, упрощается создание мощной среды разработки. Анализ и рефакторинг кода, управление зависимостями, возможности поиска и динамической подсветки — уже существующие возможности в Eclipse или Intellij IDEA перечислять можно долго. Ни одна среда разработки для С++ и близко не подобралась к такому.

F>А delphi 2007 скажем? или свежая Visual Studio?
Свежая студия ничего интересного с С++ не умеет. Дельфи не видел, но опять же — это совсем другая опера.

B>>6. Возможно, что-то забыл. Во всяком случае, я наблюдал, как коллеги пересаживались с С++ (с многолетним опытом) на Java и их производительность увеличивалась в разы.

F>А на каких конкретно участках, ну, что делали?
Разработка кросс-платформенных средств разработки для сектора потребительской электроники. Подробности под NDA,извините.
Re[3]: Расскажите профессионально, чем Java разработка быст
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 01.06.07 02:20
Оценка: +2
Здравствуйте, flashinc, Вы писали:

F>Что именно удешевляет разработку.

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

F>Ну вот пример — если нужно сляпать формочку с полем ввода и кнопкой то чем java будет быстрее чем взять visual basic или delphi?

Ничем. С начальными условиями: не знаю Java, не знаю Delphi — эту задачу быстрее решить на Delphi. Я серьезно.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Re[4]: Расскажите профессионально, чем Java разработка быст
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 01.06.07 02:24
Оценка:
Здравствуйте, den123, Вы писали:

D>Не уверен, что это можно сделать только на Java, но сомневаюсь, что это можно сделать также легко на других языках.

Можно, к примеру, в .NET рефлексия, точнее типы — функциональнее.

PS И вообще, пакость это — рефлексия, по-моему.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Re[3]: Расскажите профессионально, чем Java разработка быст
От: dev1024  
Дата: 01.06.07 03:18
Оценка:
Здравствуйте, flashinc, Вы писали:

B>>3. Есть мощное API для получения информации о типе во время исполнения (Reflection), к тому же усиленное введением в Java 5 аннотаций. С учетом возможностей по кодогенерации и созданию новых типов во время исполения программы, может сильно экономить время на написание кода.


F>А можно пример когда этот Reflection пригодился бы, и получилось что-то такое, что нельзя на конкурирующих языках?


Hibernate.
Позволяет взять готовый класс и с минимальными усилиями сохранять/восстанавливать его экземпляры в БД.
Информацию о названиях и типах полей для правильного отображения их на таблицу(ы) БД Hibernate сам вытаскивает из класса через Reflection.
Re[2]: Расскажите профессионально, чем Java разработка быст
От: astral_marine  
Дата: 01.06.07 08:08
Оценка: +2 -11 :))
Здравствуйте, Baudolino, Вы писали:

B>1. Реальная, а не условная стандартизация (в отличие от Java стандарт С++ допускает очень много вольностей).


Да, стандарт С++ более свободен и открыт для изменений. Любой разработчик компиляторов может вводить свои локальные вкусности. И это дает свободу выбора: хочеш пиши межплатформенный код для разных компиляторов, хочеш пиши код с жесткой привязкой к операционной системе, юзая все возможности ее без ограничений. Скажем, спрятать приложение в SystemTray в С++ это сущий пустяк, а вот в Java надо уже заморачиватся. Без гимора там не поюзаеш специфичиские для платформы вещие, а в С++ это делается легко и непренужденно.
Вот еще в Java нет макросов, мне приходилось писать кучу повторяющегося кода вместо нескольких десятков строчек кода с макросами.

B>2. Простота языка и наличие множества типовых решений. Средства автоматического управления памятью (в Java утечки памяти связаны исключительно с ошибками в архитектуре; в C++ труднообнаружимая утечка может стать следствием невнимательности).


Java прост, прост до примитивности, в этом ему до С++ действительно далеко. А хорошо ли это? Если задачи простые — то да! А вот если сложные, то тут можно уже поспорить, хотя бы взять ту ситуацию с макросами, что я описал выше. Пару строчек сложно кода бывают лучше чем пару сотен строчек примитивного кода.
Да еще вот дженерики сдвинули Java не в сторону упрощения самого языка.

B>3. Есть мощное API для получения информации о типе во время исполнения (Reflection), к тому же усиленное введением в Java 5 аннотаций. С учетом возможностей по кодогенерации и созданию новых типов во время исполения программы, может сильно экономить время на написание кода.


Информация о типе во время выполнения — это зло, так считаю я и многие специалисты, которые занимаются рефакторингом. Информация о типе нарушает принцыпи объектно ориентрированного программирования — инкапсуляцию. К сожалению эта зараза уже добралась в С++ в виде библиотеке boost::typeof, хотя не в таких масштабах как в Java и .NET.

B>4. Огромное количество библиотек и мощных фреймворков. Они быстро плодятся и развиваются, т.к. редко возникает необходимость в портировании (платформно-зависимый код встречается нечасто).


А в С++ этого нет? Вы, видимо, полохо знаете С++. STL, boost, wxWidgets, Qt, lib**** — это только начальный список межплатформенных бибиотек. А вот сколько есть межплатформенный библиотек для работы с XML, базами данных, сетью, потоками уже не перечесть.

B>5. В связи с 2, упрощается создание мощной среды разработки. Анализ и рефакторинг кода, управление зависимостями, возможности поиска и динамической подсветки — уже существующие возможности в Eclipse или Intellij IDEA перечислять можно долго. Ни одна среда разработки для С++ и близко не подобралась к такому.


На вкус и цвет приятеля нет. Я считаю, что Visual Studio куда намного удобней Eclipse и Intellij IDEA. Это ваше утверждение очень спорно.

B>6. Возможно, что-то забыл. Во всяком случае, я наблюдал, как коллеги пересаживались с С++ (с многолетним опытом) на Java и их производительность увеличивалась в разы.


В свое время я изучил Basic, Pascal, C++ и Java. И мне необходимо было выбирать какой язык я буду использовать. Я выбрал С++ поскольку он позволяет создавать быстрые приложения со сложной логикой относительно просто. Недостатком С++ является относительная сложность синтаксиса и отсутствие дизайнеров, это фактичекски закрывает этот язык для непроффесионалов.

Сабж меня тоже очень интересует. Я почитал посты в этой теме, но так и не нашел причин, которые могли бы увеличить мою производительность на Java. Язык проще? А меня и так на С++ никто не заставляет использовать сложные вещи. И я с ужасом представляю переписанный парсер с ипользованием boost::spirit на Java.
Re[3]: Расскажите профессионально, чем Java разработка быст
От: Дмитрий В  
Дата: 01.06.07 08:57
Оценка: +1
Здравствуйте, astral_marine, Вы писали:

_>Да, стандарт С++ более свободен и открыт для изменений. Любой разработчик компиляторов может вводить свои локальные вкусности. И это дает свободу выбора: хочеш пиши межплатформенный код для разных компиляторов, хочеш пиши код с жесткой привязкой к операционной системе, юзая все возможности ее без ограничений. Скажем, спрятать приложение в SystemTray в С++ это сущий пустяк, а вот в Java надо уже заморачиватся.

Есть библиотека jdic, с помощью которой это легко делается.
_>Без гимора там не поюзаеш специфичиские для платформы вещие, а в С++ это делается легко и непренужденно.
Одна контора решила привнести в джаву специфичные моменты для конкретной ОС, так её потом по судам затаскали
Я б сказал это сила языка, хотя конечно в то же время его слабость в какой то мере.
_>Вот еще в Java нет макросов, мне приходилось писать кучу повторяющегося кода вместо нескольких десятков строчек кода с макросами.
В принципе проблема копипаста решается с помощью ООП
_>Java прост, прост до примитивности, в этом ему до С++ действительно далеко. А хорошо ли это? Если задачи простые — то да! А вот если сложные, то тут можно уже поспорить, хотя бы взять ту ситуацию с макросами, что я описал выше. Пару строчек сложно кода бывают лучше чем пару сотен строчек примитивного кода.
Простые, сложные задачи — это все относительно. Но есть задачи, где многие низкоуровневые возможности языка могут вносить только путаницу.
В принципе java и не претендует на роль языка для кулхацкеров
_>Да еще вот дженерики сдвинули Java не в сторону упрощения самого языка.
По-моему с дженериками стало намного понятнее код читать. Также никто не заставляет их использовать.
_>Информация о типе во время выполнения — это зло, так считаю я и многие специалисты, которые занимаются рефакторингом. Информация о типе нарушает принцыпи объектно ориентрированного программирования — инкапсуляцию. К сожалению эта зараза уже добралась в С++ в виде библиотеке boost::typeof, хотя не в таких масштабах как в Java и .NET.
Не. рефлекшн это добро, по-моему при реализации системных моментов без него почти никак. Конечно лучше им не злоупотреблять.
_>А в С++ этого нет? Вы, видимо, полохо знаете С++. STL, boost, wxWidgets, Qt, lib**** — это только начальный список межплатформенных бибиотек. А вот сколько есть межплатформенный библиотек для работы с XML, базами данных, сетью, потоками уже не перечесть.
С++ по-моему еще более наколенный, чем Java Благодаря её стандартизации и вниманию серьезных контор, иногда получаются неплохие фреймворки. Например был Hibernate, потом он так распространился, что его уже нельзя было не замечать. При этом Оракл успел сделать свой Toplink, и затем уже какое то общее решение было оформлено в стандарте JPA. Если раньше многие конторы презрительно относились к Hibernate, то теперь JPA стандарт по работе с БД на деле, а не на словах.

_>На вкус и цвет приятеля нет. Я считаю, что Visual Studio куда намного удобней Eclipse и Intellij IDEA. Это ваше утверждение очень спорно.

А я на Idea после Eclipse смотреть не могу — разные рефлексы и фсе такое

_>В свое время я изучил Basic, Pascal, C++ и Java. И мне необходимо было выбирать какой язык я буду использовать. Я выбрал С++ поскольку он позволяет создавать быстрые приложения со сложной логикой относительно просто. Недостатком С++ является относительная сложность синтаксиса и отсутствие дизайнеров, это фактичекски закрывает этот язык для непроффесионалов.


_>Сабж меня тоже очень интересует. Я почитал посты в этой теме, но так и не нашел причин, которые могли бы увеличить мою производительность на Java. Язык проще? А меня и так на С++ никто не заставляет использовать сложные вещи. И я с ужасом представляю переписанный парсер с ипользованием boost::spirit на Java.


По-моему при выборе языка надо в первую очередь определиться, чем ты хочешь заниматься. Возможно от этого выбора при выборе языка разработки вариантов просто не останется.
Java впервую очередь рулит на уровне enterprise приложений, поддержываемая многими девелоперскими конторами, такими как Oracle, IBM, WebLogic и др.. j2ee стандарт смог их обьединить.
Re[3]: Расскажите профессионально, чем Java разработка быст
От: JavaBean Украина  
Дата: 01.06.07 09:01
Оценка: +1
Здравствуйте, astral_marine, Вы писали:

_>Да, стандарт С++ более свободен и открыт для изменений. Любой разработчик компиляторов может вводить свои локальные вкусности. И это дает свободу выбора: хочеш пиши межплатформенный код для разных компиляторов, хочеш пиши код с жесткой привязкой к операционной системе, юзая все возможности ее без ограничений. Скажем, спрятать приложение в SystemTray в С++ это сущий пустяк, а вот в Java надо уже заморачиватся. Без гимора там не поюзаеш специфичиские для платформы вещие, а в С++ это делается легко и непренужденно.


И что тут сложного?
SystemTray.isSupported()
SystemTray tray = SystemTray.getSystemTray();

и все рисуй менюшки и слушатели

_>Вот еще в Java нет макросов, мне приходилось писать кучу повторяющегося кода вместо нескольких десятков строчек кода с макросами.


вот тут можно поподробней? не очень монял что была за задача и вчем неудобство ее решения

B>>2. Простота языка и наличие множества типовых решений. Средства автоматического управления памятью (в Java утечки памяти связаны исключительно с ошибками в архитектуре; в C++ труднообнаружимая утечка может стать следствием невнимательности).


_>Да еще вот дженерики сдвинули Java не в сторону упрощения самого языка.

Дженерик в яве достаточно простой, плюс пердоставляет дополнительные проверки типов при компилации. соответсвенно убираются ненужные конструции на проверку типа в коде.

_>Информация о типе во время выполнения — это зло, так считаю я и многие специалисты, которые занимаются рефакторингом. Информация о типе нарушает принцыпи объектно ориентрированного программирования — инкапсуляцию. К сожалению эта зараза уже добралась в С++ в виде библиотеке boost::typeof, хотя не в таких масштабах как в Java и .NET.


при нормальном подходе к проектировнию приложения это не используется

B>>4. Огромное количество библиотек и мощных фреймворков. Они быстро плодятся и развиваются, т.к. редко возникает необходимость в портировании (платформно-зависимый код встречается нечасто).


_>А в С++ этого нет? Вы, видимо, полохо знаете С++. STL, boost, wxWidgets, Qt, lib**** — это только начальный список межплатформенных бибиотек. А вот сколько есть межплатформенный библиотек для работы с XML, базами данных, сетью, потоками уже не перечесть.


_>На вкус и цвет приятеля нет. Я считаю, что Visual Studio куда намного удобней Eclipse и Intellij IDEA. Это ваше утверждение очень спорно.

Согласен — IDE не сранивает! Это уж очень субьективно

_>Сабж меня тоже очень интересует. Я почитал посты в этой теме, но так и не нашел причин, которые могли бы увеличить мою производительность на Java. Язык проще? А меня и так на С++ никто не заставляет использовать сложные вещи. И я с ужасом представляю переписанный парсер с ипользованием boost::spirit на Java.


И не мучайся. Мне как-то в юниксе нужно было переименовать в директории, и далее рекурсивно, файли. Я написао програмку на яве а не на bush — потому что я ее знаю а з башем еле знаком. Хотя я и понимаю что человек знающий баш сделал бы это более быстро.

Так что от себя хочу добавить. О повышение продуктивности можна говорить только при налчии определенного опыта в использовании языка иначе нужно не забывать что первое время это будет время потраченое на адаптацию.
Re[3]: Расскажите профессионально, чем Java разработка быст
От: tavr  
Дата: 01.06.07 09:06
Оценка: +1
Здравствуйте, astral_marine, Вы писали:

_>Вот еще в Java нет макросов, мне приходилось писать кучу повторяющегося кода вместо нескольких десятков строчек кода с макросами.

какое именно применение макросов вы считаете небходимым?
— простое вынесение общего кода в отдельный метод учат даже в простейших языках
— препроцессинг исходного кода лучше делать не средствами самого языка а внешними инструментами
Re[2]: Расскажите профессионально, чем Java разработка быст
От: Glоbus Украина  
Дата: 01.06.07 09:06
Оценка: +3 -2
Здравствуйте, Baudolino, Вы писали:

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


F>>Здравствуйте,

F>>мне хотелось бы услышать ответ, чем именно разработка на десктопной Java (SE) быстрее разработки на C++ ??
F>>Для конкретики возьмем, скажем, Microsoft Visual C++. Вопрос не про язык, именно про скорость разработки, про утилиты, библиотеки, методики итд..
F>>Говорят что разработка на java быстрее и дешевле. Так ли это?

B>1. Реальная, а не условная стандартизация (в отличие от Java стандарт С++ допускает очень много вольностей).

Агащас.

B>2. Простота языка и наличие множества типовых решений. Средства автоматического управления памятью (в Java утечки памяти связаны исключительно с ошибками в архитектуре; в C++ труднообнаружимая утечка может стать следствием невнимательности).

Не понимаю, как средства автоматического управления памятью помогут в написании десктопных аппликух.

B>3. Есть мощное API для получения информации о типе во время исполнения (Reflection), к тому же усиленное введением в Java 5 аннотаций. С учетом возможностей по кодогенерации и созданию новых типов во время исполения программы, может сильно экономить время на написание кода.

А к десктопным аппликухам как это относится? Я вот на плюсах пишу ни один год и мне пока еще ни разу не требовалось во время исполнения создавать новые типы.

B>4. Огромное количество библиотек и мощных фреймворков. Они быстро плодятся и развиваются, т.к. редко возникает необходимость в портировании (платформно-зависимый код встречается нечасто).

А что, qt какой-нить на плюсах уже отминили?

B>5. В связи с 2, упрощается создание мощной среды разработки. Анализ и рефакторинг кода, управление зависимостями, возможности поиска и динамической подсветки — уже существующие возможности в Eclipse или Intellij IDEA перечислять можно долго. Ни одна среда разработки для С++ и близко не подобралась к такому.

Да ладно уж там — и близко... Теже мс-вижы — весьма удобная среда.

B>6. Возможно, что-то забыл. Во всяком случае, я наблюдал, как коллеги пересаживались с С++ (с многолетним опытом) на Java и их производительность увеличивалась в разы.

В разы это во сколько — 2, 3, 4? Что, реально при переходе на жабу проект вместо 12 месяцев делался за 4 или за 3? Полная фигня.

З.Ы. На самом деле, языки типа С++, жабы, дотнета и т.п. — это просто гаечные ключи, которые применяются при решении задач — все эти ключи умеют крутить гайки. при том одни лучше крутят одни гайки, другие лучше крутят другие, плюсы например хорошо крутят все гайки, но для пользования этим ключам нужно иметь может чуть более высокую квалификацию, чем для других. И все эти разговоры типа "производительность после перехода с плюсов на жабу повысилась в разы" — профанация чистейшей воды. Если бы все было так, то весь мир был уже писал на жабе: шутка ли — сократить сроки разработки в 3 раза.
Удачи тебе, браток!
Re: Расскажите профессионально, чем Java разработка быстрее
От: tavr  
Дата: 01.06.07 09:23
Оценка: 1 (1) +2
Здравствуйте, flashinc, Вы писали:

F>мне хотелось бы услышать ответ, чем именно разработка на десктопной Java (SE) быстрее разработки на C++ ??

F>Для конкретики возьмем, скажем, Microsoft Visual C++. Вопрос не про язык, именно про скорость разработки, про утилиты, библиотеки, методики итд..
десктопные приложения не являются главным "коньком" явы
история развития языков программирования начиналась с десктопных приложений, и на текущий момент почти все языки программирования имеют средства для их быстрой разработки. Поэтому пишите на том языке и с использованием тех библиотек, которые хорошо знаете — это и есть самая бысрая разработка.

F>Говорят что разработка на java быстрее и дешевле. Так ли это?

ява позволяет отвлечься от низкоуровневых вещей, сосредоточась на самом бизнес-просессе
для меня лично стало открытием. когда я на яве мог писать код целый день, под вечер в первый раз запустить пиложение и получить именно тот результат, на который рассчитывал, без единой баги
Re[4]: Расскажите профессионально, чем Java разработка быст
От: CreatorCray  
Дата: 01.06.07 09:28
Оценка: :)
Здравствуйте, rsn81, Вы писали:

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

Угу, помницца я как то работал в одной веселой конторе, там писали на жабе систему документооборота. Так вот проблема памяти там стояла очень остро. Потому как система непрерывно хавала память, когда она физически кончалась запускался GC — становилось полегче и так по кругу. На девелоперских машинах это было почти незаметно. Трабл вылез только когда начали ставить систему заказчику — вот тогда геморроя было хоть отбавляй...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Расскажите профессионально, чем Java разработка быст
От: Sinclair Россия https://github.com/evilguest/
Дата: 01.06.07 09:37
Оценка: 3 (1) +1
Здравствуйте, flashinc, Вы писали:
F>Дайте примеры библиотек чтобы сразу уж знать
Дело не в библиотеках. Дело в том, что пока комитет С++ решал, стоит ли стандартизовать коллекции, в Java стандартизовали сетевой ввод-вывод, поддержку HTTP, HTML, почты, XML, XSL, криптографии, компрессии, persistency и еще очень-очень много чего. Я даже список стандартов привести затрудняюсь.
И практически для каждого есть открытая reference реализация и несколько штук коммерческих. А это означает, что ты не должен мучиться и выбирать, к примеру, какого криптопровайдера использовать, а просто опираешься на стандарт. И потом выбираешь одного из десятка взаимозаменяемых провайдеров, принимая решение на основе всяческих разных требований. Плюсам такая роскошь не снилась и в эротическом сне. Библиотеки слабо совместимы между собой, а уж взаимозаменяемости ты не найдешь.

З.Ы. Писать быстрее всего на том, что хорошо знаешь. Независимо от количества библиотек и наличия рефлекшна.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Расскажите профессионально, чем Java разработка быстрее
От: Дмитрий В  
Дата: 01.06.07 09:42
Оценка:
Здравствуйте, flashinc, Вы писали:

F>Здравствуйте,

F>мне хотелось бы услышать ответ, чем именно разработка на десктопной Java (SE) быстрее разработки на C++ ??
F>Для конкретики возьмем, скажем, Microsoft Visual C++. Вопрос не про язык, именно про скорость разработки, про утилиты, библиотеки, методики итд..
F>Говорят что разработка на java быстрее и дешевле. Так ли это?

F>большая просьба! Не устраивать неинформативный флейм Java vs C++ !!!


А в этом сообщении вопрос Java vs C++ переведен на более осязаемое понятие, а именно — деньги:
http://rsdn.ru/forum/message/2510299.1.aspx
Автор: flashinc
Дата: 01.06.07


Возьму риск сделать feedback по наблюдению темы.
(вопрос был немного в другом, но сишники занялись как всегда любимым делом — отслеживанием инициализации ссылок, итд...)


В оригинальном письме содержалось:

не могу найти программиста-профессионала C++: все приходят либо 4.0K+ и ничего делать не хотят ("давайте я будут обсуждать архитектуру, а в свободное от этого время — писать код"), либо 1.5K и в глазах вопрос...
а посередине никого не осталось???

Так вот дело в том, все верно, что не можете найти С++.
Ибо C++ программист, это дело такое — он должен быть либо высочайшим профессионалом, либо он не должен быть C++ программистом. Посередине не должно быть. По определению C++ программиста. А вы хотите посредине. Вот отсюда и этот life concept misunderstanding. Или платите деньги и нанимайте профессионалов (найти будет очень сложно, они уже все расхватаны). Или студентов, но миритесь. Везде должен быть компромисс.


Потом второе. Последив за дискуссией, стал понятен ваш метод отсева программистов (я называю их программистами — хотя ваш подход прослеживающийся в дискуссии — это "кодописатель-который-идеально-знает-язык-си-плас-плас"). Некоторые довольно мудрые люди уже заметили, что студент легко справляется с вопросами касаемо синтаксиса языка. А как же быть, если программа не линкуется? Нужно подключить third-party библиотеку? Найти memory leak в этой библиотеке?

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

Вот пример — мне знаком человек, который не ответит на вопросы по ссылкам, виртуальным деструкторам, и уж тем более — темплейтам. То есть он, не "высочайший C++ профессионал". (Соответсвенно, не просит $2-3K, зарплата <1K)
Но зато он очень и очень быстро само-обучаем, способен читать любой ассемблер (и мгновенно разобрать структуру программы) и написать очень функциональный, очень робастный код, снабженный отличными комментариями. Причем, программы/алгоритмы которые он пишет сам, не задавая нигде вопросов, весьма сложны — это, например, эмуляторы микропроцессоров с динамической рекомпиляцией и анализом микропроцессорного кода, и эмуляторы hardware (заметьте, я говорю — сложны программы, а не "C++ текст", как раз C++ текст у него прост). Он понимает общие концепции ООП и использует их с умом. А не лепит везде классы, гуарды, темплейты и ссылки. Ему достаточно указателей. И главное — все работает исключительно хорошо.

Так вот, может быть стоит:
a) Изменить подход к отсеву кандидатов (после ответа на вопрос, кто нужен — "идеальный C++ кодописатель" или "талантливый C++ программист")
б) Выбрать другую платформу? Java? .NET ?

Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.