Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > Java > C++


Автор: JAnty 18.3.2005, 14:37
Почему говорят что Java это улучшенный С++.
Это так или у них больное сознание?

Автор: DENNN 18.3.2005, 14:39
В литературе есть такое понятие: метафора. smile

Автор: S.A.P. 18.3.2005, 14:50
Скорее урезанный чем улучшенный.

пойду ка я отсюда, пока помидорами не забросали.

Автор: Дрон 18.3.2005, 14:53
Да это совершенно разные языки.

ЗЫ: ТЕМУ ВО ФЛЕЙМ!!!

Автор: sergejzr 18.3.2005, 15:02
Цитата
ЗЫ: ТЕМУ ВО ФЛЕЙМ!!!

Ага!

Автор: pablo 18.3.2005, 15:02
Ява - ето действительно улучшенный С++ и для етого есть несколько существенных причин.
Вот несколько из них:

1) Максимальное упрощение синтаксиса языка, (отказ от указателей, шаблонов, и прочих средств С++ в которых часто могут быть неприянности).
2) Создание мултиплатформенной, единой системы, как для разработки сетевых программ, так и для простых приложений.
3) Создание единой и удобной системы разработки GUI приложний.
4) Создание улучшеной и гораздо обильнее чем в С++ стандартной библиотеки.

Ну так судите сами, лучше или нет ?

Автор: JAnty 18.3.2005, 15:47
Я не поддамся на провокацию. С++ лучше.
Без указателей это не ООП, а просто глупости.

Автор: sergejzr 18.3.2005, 16:20

И Ява и С++ это просто улучшенный ассемблер! smile

Автор: Дрон 18.3.2005, 16:22
Цитата(JAnty @ 18.3.2005, 15:47)
Без указателей это не ООП, а просто глупости.

smile
Во первых, какое отношение имеют указатели к ООП? smile smile
Во вторых в Джаве все переменные это и есть указатели. smile


ЗЫ: ТЕМУ ВО ФЛЕЙМ!!!
ЗЗЫ: Может сделать у себя такую подпись: "ТЕМУ ВО ФЛЕЙМ!!!" smile smile smile

Автор: pablo 18.3.2005, 16:28
Понятие "лучше" крайне растежимое. Ява - язык полностью объекто ориентированный. Он не поддерживает структурного программирования, так что говорить что без указателей - это не ООП, неправильно.
Но у Явы, тоже есть сушественный изьян: Скорость работы. Он крайне медлителен изза своего чуда "Байт кода".
Хотя на сегодняшний день С++ гораздо чащe применяемый чем Ява, и на мой взгляд более удобней чем Ява.
И еще, как говорят многие начинающие программисты ООП, ява гораздо легче в понимании чем С++.

Так что если стоит вопросс что выбирать Ява или С++, а лично выбрал бы С++, несмотря на все прелести Ява.

Хотите соглашайтесь, хотите нет, это моё личное мнение.

Добавлено @ 16:31
Нащет Ассемблера полностью согласен, только Ассемблер - это улучшеный язык машинных кодов.
smile

Автор: S.A.P. 18.3.2005, 17:42
Цитата(pablo @ 18.3.2005, 16:28)
Нащет Ассемблера полностью согласен, только Ассемблер - это улучшеный язык машинных кодов.
только разница в том, что в ассмемблере можно сделать тоже самое что и в машинных кодах, а на Яве некоторые вещи не сделаешь, то что можно сделать в C++ smile .

Автор: JAnty 18.3.2005, 19:59
Насчот ООП я погорячился, но я тогда не вижу смысл Джавы.

Автор: chipset 18.3.2005, 20:00
Модератор: ТЕМА В ФЛЕЙМ!!! ... перемещена smile

Автор: Domestic Cat 18.3.2005, 20:09
Цитата
Но у Явы, тоже есть сушественный изьян: Скорость работы. Он крайне медлителен изза своего чуда "Байт кода".


http://www.idiom.com/~zilla/Computer/javaCbenchmark.html
http://soft.compulenta.ru/2004/6/17/47645/?ref=left
http://kano.net/javabench/

Цитата
Хотя на сегодняшний день С++ гораздо чащe применяемый чем Ява, и на мой взгляд более удобней чем Ява.


Ерунда - насчет удобства по крайней мере. На западe жe С++ стабильно проигрывает.

Цитата
Ява недорос. 

На счот ООП я погорячился, но я тогда не вижу смысл Джавы.
Если в С++ перестать пользоваться тем, чего нет в J, то С превратится в J.


Смысл Java - в кроссплатформенности, а тakже в тоm, что программы нa ней проще и намного быстрее писать, проще поддержиать. Корпоративные веб приложения / сервиса и пр пишутся нa Java, С++ тaм рядом не стоял.

Цитата
Скорее урезанный чем улучшенный.


часто лi нужнa "неурезанность"? Пo опыту знаю - в 99% не нужна.

ЗY: J++ - это не Java.

Автор: dm9 18.3.2005, 20:19
Цитата(Perchilla @ 18.3.2005, 17:42)
на Яве некоторые вещи не сделаешь, то что можно сделать в C++  .


Можно примерчик для общего развития? Без кодов, просто на словах.

Автор: Domestic Cat 18.3.2005, 20:28
Цитата
Можно примерчик для общего развития? Без кодов, просто на словах.


Например, нельзя указывать поинтером на пустое место и думать, что там что-то есть, забывать удалить объеkt в цикле и гадать потом, куда делась память, вылазить за границы массивa из-за опечатки и брать непонятно какие непонятно откуда значения. Нельзя иметь богатую библиотеку классов - одну на всех, а нe кучу разных и несовместимых. Нельзя путаться в дебрях *->***->...__> и прочих хороших вещах... И так далее...
шучу.

Автор: batigoal 18.3.2005, 20:50
Как мне кажется, большое удобство - возможность сделать большое корпоративное приложение с доступом через браузер, т.е. никакой специальной клиентской части. Это позволяет делать очень крупные распределенные системы. В С++, как в более универсальном языке, тоже можно такое сделать, но в J2EE есть много классов, методик и т.п., предназначенных специально для этой задачи.
Все ИМХО.

Автор: Domestic Cat 18.3.2005, 21:05
Цитата
J2EE есть много классов, методик и т.п., предназначенных специально для этой задачи.


Дело в самой спецификации J2EЕ, понятии "контейнер" и кроссплатформенности Java.

Java - J2EE приложениe будет одинаковo работать нa Макe, винде, линухe или солярисе. Вообще без каких-либо изменений и перекомпиляции. с++ - нет.

Java - J2EE приложениe будет одинаковo работать на любом J2EE контейнерe - правдa, с настройкоj самого контейнера.

Java - J2EE контейнер делает столько зa программиста, сколько весь этот форuм зa год не напишет. Транзакции, персистенс, кластеринг, балансинг нагрузки, фейл-овер, динамический редеплоймент, логгинг и аудиt, трединг, управлениe жизнью объектa, пулинg ресурсов, секьюрити, кеширование и т п. Все этo делается контейнерoм, причем один клиент можet работать на линухe с десктоп приложeния, другой- черeз броузер, третий - быть таким же прилoжением на виндe.

Сделайтe этo нa с++ ...

Автор: batigoal 18.3.2005, 23:02
Цитата(Domestic @ 18.3.2005, 21:05)
Транзакции, персистенс, кластеринг, балансинг нагрузки, фейл-овер, динамический редеплоймент, логгинг и аудиt, трединг, управлениe жизнью объектa, пулинg ресурсов, секьюрити, кеширование и т п.

smile Просто челюсть отвисла... Сколько всего еще нужно узнать...

Автор: Darked 18.3.2005, 23:06
Цитата(Domestic @ 18.3.2005, 20:28)
Например, нельзя указывать поинтером на пустое место и думать, что там что-то есть, забывать удалить объеkt в цикле и гадать потом, куда делась память, вылазить за границы массивa из-за опечатки и брать непонятно какие непонятно откуда значения.


Это уже беда не языка, а программиста. Если он не может писать правильно, то тут уж.... Это все равно что говорить что автомат Калашникова хуже чем палка, из автомата можно себе что - нить прострелить, поэтому с палкой проще воевать....
Java более уневерсален, а плата за это обычно - большая ограниченность в возможностях. Убери у жабы кроссплотформенность и у нее сразу гораздо меньше преимуществ останется.

Автор: S.A.P. 18.3.2005, 23:09
Domestic Cat вот ведь изругался, от всей души. smile

Все, будем переходить на Java, или С# smile .

Автор: chipset 18.3.2005, 23:12
Цитата(Darked @ 18.3.2005, 12:06)
Убери у жабы кроссплотформенность и у нее сразу гораздо меньше преимуществ останется.

Всё что есть у Jav'ы, также есть и у C++.
Кроссплатформенность? Пожалуйста, boost::thread, STL и Qt.
garbage collector? std::auto_ptr и т.д.
Но кроме того у C++ есть перегрузка операторов, прямая работа с памятью и большее быстродействие.
Добавлено @ 23:14
Цитата(Domestic @ 18.3.2005, 10:05)
Java - J2EE контейнер делает столько зa программиста, сколько весь этот форuм зa год не напишет.

Пожалуй только с этим я соглашусь.

Автор: Domestic Cat 18.3.2005, 23:17
Цитата(Darked @ 18.3.2005, 14:06)
Это уже беда не языка, а программиста. Если он не может писать правильно, то тут уж.... Это все равно что говорить что автомат Калашникова хуже чем палка, из автомата можно себе что - нить прострелить, поэтому с палкой проще воевать....


Это спорный вопрос. Например, если завтра раздать каждому по пистолету с боевыми патронами - увеличится количество убийств или нет? Мне почему-то кажется, что да. Хотя формально вина будет не на раздававшем.


Цитата(Darked @ 18.3.2005, 14:06)
Java более уневерсален, а плата за это обычно - большая ограниченность в возможностях.


Ничуть не "большая". Посмотри ради интереса на IntellijIDEA - прекрасный IDE, написанный на Java, даст 100 очков вперед многим, в том числе студии. Посмотри игру http://www.chromethegame.com/en/index.html. Большая ограниченность, говоришь?
Да, нельзя с памятью работать напрямую. Ну не напишу я драйвер какой. Ну, не смогу я делать чисто виндозные приколы. Ну и ? IDEA от этого хуже стала? Ничуть. Каждому свое - ну есть МФЦ - пишите пожалуйста.


Цитата(Darked @ 18.3.2005, 14:06)
Убери у жабы кроссплотформенность и у нее сразу гораздо меньше преимуществ останется.


Тогдя это будет не Java. А если у С++ отобрать всю его МОЩЬ... smile А у ассемблера MOV ....smile smile

Автор: S.A.P. 18.3.2005, 23:17
chipset просто когда Windows будет полностью построен на IL, а Linux и Mak на байт коде (возможно в далеком будущем) использование C++ с API будет не целесообразым, если конечно он удивительным образом не перекочует на IL или байт код.

Автор: Domestic Cat 18.3.2005, 23:22
Цитата(chipset @ 18.3.2005, 14:12)
Кроссплатформенность? Пожалуйста, boost::thread, STL и Qt.


Не понял? Где тут кроссплатформенность???? А ну-ка, дайте мне приложение на С++, чтоб я его на своем Маке запустил smile smile smile
Цитата(chipset @ 18.3.2005, 14:12)
Но кроме того у C++ есть перегрузка операторов, прямая работа с памятью и большее быстродействие.

Перегрузка - не преимущество, а фича, причем спорная по полезности.
Быстродействие - смотри
http://soft.compulenta.ru/2004/6/17/47645/?ref=left
Сколько раз ссылку давать?

Автор: S.A.P. 18.3.2005, 23:25
Цитата(Domestic @ 18.3.2005, 23:22)
Не понял? Где тут кроссплатформенность????
ну ты сначала QT поставь, потом я пришлю програмку, а ты скомпилишь. А ты как хотел? smile . Мне же тоже, чтобы Явовскую прогу запустить надо JVM поставить, или как там у вас smile .

Автор: Darked 18.3.2005, 23:27
Цитата(Domestic @ 18.3.2005, 23:17)
увеличится количество убийств или нет? Мне почему-то кажется, что да.

Так и я о том же, что это С++ - интсрумент убийства, а не самоубийства ; )))


Цитата(Domestic @ 18.3.2005, 23:17)
Ну не напишу я драйвер какой. Ну, не смогу я делать чисто виндозные приколы. Ну и ? IDEA от этого хуже стала? Ничуть. Каждому свое - ну есть МФЦ - пишите пожалуйста.

Согласен, под каждые нужды свои инструменты. Но системные вещи все таки не для джабы.


Цитата(Domestic @ 18.3.2005, 23:17)
Тогдя это будет не Java. А если у С++ отобрать всю его МОЩЬ...  А у ассемблера MOV ....

То есть все таки я прав, у джавы основной козырь - кроссплатформенность ; )

Автор: batigoal 18.3.2005, 23:27
Цитата(Perchilla @ 18.3.2005, 23:25)
Мне же тоже, чтобы Явовскую прогу запустить надо JVM поставить, или как там у вас

Если локальное приложение - да.
Если обратиться к серверному - нет.
Добавлено @ 23:28
Цитата(Darked @ 18.3.2005, 23:27)
То есть все таки я прав, у джавы основной козырь - кроссплатформенность

Прав.
Цитата(Darked @ 18.3.2005, 23:27)
Но системные вещи все таки не для джабы

Согласен.

Автор: S.A.P. 18.3.2005, 23:32
Цитата(Lamer @ 18.3.2005, 23:27)
Если обратиться к серверному - нет.
поясни. Допустим у меня стоит голая винда, я ничего на нее не ставил. И как мне запустить серверное приложение?

Автор: Domestic Cat 18.3.2005, 23:33
Цитата(Perchilla @ 18.3.2005, 14:25)
ну ты сначала QT поставь, потом я пришлю програмку, а ты скомпилишь. А ты как хотел? smile . Мне же тоже, чтобы Явовскую прогу запустить надо JVM поставить, или как там у вас smile .


Нет. Это НЕ КРОССПЛАТФОРМЕННОСТЬ. Кросплатформенность в том, что я присылаю тебе прогу, а ты ее запускаешь БЕЗ КОМПИЛЯЦИИ.


Автор: RA 18.3.2005, 23:33
Цитата(sergej @ 18.3.2005, 16:20)
И Ява и С++ это просто улучшенный ассемблер!


Глаголишь, истину. smile

Асм всему голова.

Автор: Domestic Cat 18.3.2005, 23:34
Цитата(Perchilla @ 18.3.2005, 14:32)
поясни. Допустим у меня стоит голая винда, я ничего на нее не ставил. И как мне запустить серверное приложение?


Lamer George имел в виду, что можно обратиться к серверному Java -приложению или веб сервису.

Автор: Darked 18.3.2005, 23:35
Цитата(Domestic @ 18.3.2005, 23:22)
Быстродействие - смотри
http://soft.compulenta.ru/2004/6/17/47645/?ref=left
Сколько раз ссылку давать?

Ну gcc не самый быстрый код дает, это бы сравнить с M$ Visual C++!

Автор: sergejzr 18.3.2005, 23:38
Цитата(Perchilla @ 18.3.2005, 22:32)
поясни. Допустим у меня стоит голая винда, я ничего на нее не ставил. И как мне запустить серверное приложение?

http://www.server-proga.ru/

smile smile

Автор: Domestic Cat 18.3.2005, 23:40
Цитата(Darked @ 18.3.2005, 14:35)
Ну gcc не самый быстрый код дает, это бы сравнить с M$ Visual C++!


Да какя разница? По сравнению с самыми быстрыми С++ компиляторами Java отстает раза в 1.5 - 3. Если в особо критических местах пользовать нативные методы (в Java можно такое делать кстати), то будет где-то проигрыш в 1.2 раза.
Но в целом, для 95% приложений разницы нет, даже если бы Java проигрывала в пять раз. Основные тормоза приложений при нынешней скорости компов - работа с IO, нетворкинг. А юзеру пофик - посчитает твоя программа 2+2 за 1 наносекуну или за 1 миллсекунду. Он не заметит просто.

Автор: S.A.P. 18.3.2005, 23:41
Какие - то странные у вас приколы.

Цитата(sergej @ 18.3.2005, 23:38)
http://www.server-proga.ru/
И что? smile там может быть что угодно, хоть C++ прога на ISAPI. Не удивили smile .

Автор: Darked 18.3.2005, 23:44
Цитата(Domestic @ 18.3.2005, 23:40)
А юзеру пофик - посчитает твоя программа 2+2 за 1 наносекуну или за 1 миллсекунду.

В принципе согласен, но а если дело касается обработка изображений или работа с БД ?

Автор: sergejzr 18.3.2005, 23:46
Главный минус явы всё же - вирт. машина, которой нужно время для того чтобы загрузится и стартануть. Дальше, как и говорит Доместик, скорость пофик smile

Автор: batigoal 18.3.2005, 23:46
Цитата(Perchilla @ 18.3.2005, 23:41)
там может быть что угодно

Вот именно это "что угодно" и удобно писать на Яве smile

Автор: sergejzr 18.3.2005, 23:48
БД - io поэтому тормоза главные в ней.
При работе с изображениями разница с Си будет небольшой, потому что циклы и так и так почти одинакого быстро выполняются smile

Автор: batigoal 18.3.2005, 23:49
Цитата(sergej @ 18.3.2005, 23:48)
БД - io поэтому тормоза главные в ней

В смысле? В самой базе или во время ее обработки в бизнес-логике?

Автор: Domestic Cat 18.3.2005, 23:51
Цитата(Darked @ 18.3.2005, 14:44)
работа с БД


Работа с БД - здесь Java поступает хитро - она предоставляет интерфейс, и все. То есть, работать с любой БД можно. Написал для Оракла - потом можно перейти на мускул и не заметить. Хотя тонкости есть, некоторые БД не имеют некоторых фич, но это мелочи. Чтоб работать с БД, нужен драйвер от производителя. Производитель сам как хочет, так и пишет. Потому проигрыша тут нет.

Цитата(Darked @ 18.3.2005, 14:44)
касается обработка изображений

Тут я не спец, не знаю. Но не думаю, что проигрыш большой. Ту же Java3D использовали на марсоходах - значит, производительность неплохая smile

Автор: sergejzr 18.3.2005, 23:52
Цитата(Lamer @ 18.3.2005, 22:49)
В смысле? В самой базе или во время ее обработки в бизнес-логике?

Во время самих запросов. передача из твоего процесса - БД процессу

Автор: S.A.P. 18.3.2005, 23:53
sergej.z
Цитата(sergej @ 18.3.2005, 23:48)
При работе с изображениями разница с Си будет небольшой, потому что циклы и так и так почти одинакого быстро выполняются
почему же тогда Corel, Adobe свои продукты на сях пишут и для кажой платформы перекомпилируют. "Удобнее" же на Java: бесплатно, не надо компилить заново, не надо переделывать по каждую платформу, раз Java с изображениями так быстро работает?

Автор: Domestic Cat 18.3.2005, 23:58
Цитата(Perchilla @ 18.3.2005, 14:53)
почему же тогда Corel, Adobe свои продукты на сях пишут и для кажой платформы перекомпилируют. "Удобнее" же на Java: бесплатно, не надо компилить заново, не надо переделывать по каждую платформу, раз Java с изображениями так быстро работает?

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

Автор: Darked 19.3.2005, 00:00
Цитата(Perchilla @ 18.3.2005, 23:53)
почему же тогда Corel, Adobe свои продукты на сях пишут и для кажой платформы перекомпилируют. "Удобнее" же на Java: бесплатно, не надо компилить заново, не надо переделывать по каждую платформу, раз Java с изображениями так быстро работает?

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

Автор: sergejzr 19.3.2005, 00:02
Цитата(Domestic @ 18.3.2005, 22:58)
В мире больших програм и большого бизнеса логика своя.

Именно! smile
В основном из за переучивания персонала. Ещё роль играет суппорт разработчика IDE.
Многие фирмы выбирают продукты микрософта исключительно из за гарантированного суппорта. Деньги не имеют при этом большого значения, потому что списывается с налогов smile
Добавлено @ 00:03
Цитата(Darked @ 18.3.2005, 23:00)
А на С++ я написал софт, и мне не нужно просить бедного юзера искать вирт.машину, чтобы наслодиться приобретенным сфтом.

Если и он и ты на "на виндах"

Автор: Domestic Cat 19.3.2005, 00:11
Цитата(Darked @ 18.3.2005, 15:00)
Тут я думаю любой солидный коммерческй проукт лучше писать под свою плотформу хотя бы потому, что не нужно пользователя выкачивать еще и джава машину, которая кстати есть не у всех! А на С++ я написал софт, и мне не нужно просить бедного юзера искать вирт.машину, чтобы наслодиться приобретенным сфтом.


За то что она не у всех - спасибо мелкософту. Хотя они вроде с Сан помирились, кто его знает, чем обернется. Тем не менее, поставил JRE и забыл. Для запада 15 метров скачать легче, чем левое ухо почесать. Я сейчас могу стянуть хоть всю вижуал студию на четырех дисках плюс все звездные войны и заплачу те же 30 баксов в месяц. И так каждый (тут).
Добавлено @ 00:12
Забыл - на Макинтоше уже стоят Java, Perl, Python, gcc - даже тянуть не нужно.

Автор: alir 19.3.2005, 00:42
Цитата
Можно примерчик для общего развития? Без кодов, просто на словах.


Например, ядро операционной системы и работа с памятью - на java нереально написать, а на C++ в самы раз.

Цитата
Насчот ООП я погорячился, но я тогда не вижу смысл Джа

Да вы что? Совсем что ли? И так поняно: написание мобильных приложений, корпоративные проекты, аплеты...

Цитата
На западe жe С++ стабильно проигрывает.

Да C++ уже почти везде проиграл - сейчас время java и .NET (C#).

ИМХО:
Java - язык хороший, но для него нет универсальной, удобной и стандартной IDE (и даже не заикайтесь о SUN One Sudio), а вот
Visual Studio.NET в самый раз - удобный и распространенный, так что
C# рулит!

Автор: Domestic Cat 19.3.2005, 00:48
Цитата(alir @ 18.3.2005, 15:42)
Java - язык хороший, но для него нет универсальной, удобной и стандартной IDE (и даже не заикайтесь о SUN One Sudio), а вот


Универсальной - точно нет, но многообразие - это хорошо smile Хотя в целом, есть две приличные IDE - IDEA и Eclipse, ничуть не хуже Студии.


Автор: alir 19.3.2005, 00:57
Цитата
Можно примерчик для общего развития? Без кодов, просто на словах.


Например, написание ядра OS и ее работу с памятью нереально на java, только на C++.

Цитата
Насчет ООП я погорячился, но я тогда не вижу смысл Джавы.


Да ты что? На java пишут мобильные приложения, корпоративные поекты,
иногда и web, но в создании "настольного" ПО эффективен C++ в силу своей скорости выполнения.

Цитата
На западe жe С++ стабильно проигрывает.

Еще бы, сейчас рулит .NET.

Автор: sergejzr 19.3.2005, 01:02
alir, повторяешься smile

Автор: Domestic Cat 19.3.2005, 01:07
Цитата(alir @ 18.3.2005, 15:57)
Еще бы, сейчас рулит .NET.


Рынок сейчас такой: 60-70 % Java - 30-40% C# - по веб приложениям и сервисам smile

Автор: sergejzr 19.3.2005, 01:14
Цитата(alir @ 18.3.2005, 23:57)
Например, написание ядра OS и ее работу с памятью нереально на java, только на C++.


не, ну почему? Тоже можно, если возмёшь компилер, который её в исполняемый код переведёт smile

Автор: S.A.P. 19.3.2005, 01:16
sergej.z в таком случае C++ Virtual Mashine тоже можно изобрести smile.

Автор: ZX-80 19.3.2005, 01:18
Цитата(sergej @ 19.3.2005, 01:14)
не, ну почему? Тоже можно, если возмёшь компилер, который её в исполняемый код переведёт

Смысл Jav'ы теряется.. Получается очередной J#.

Автор: Domestic Cat 19.3.2005, 01:21
Цитата(Perchilla @ 18.3.2005, 16:16)
sergej.z в таком случае C++ Virtual Mashine тоже можно изобрести

Дык есть же .NET CLR и Managed C++ smile Правда там кросплатформенностью и не пахло smile







Автор: ZX-80 19.3.2005, 01:24
Цитата(Domestic @ 19.3.2005, 01:21)
Правда там кросплатформенностью и не пахло

Почему не пахло? http://www.mono-project.com/Main_Page.

Автор: Domestic Cat 19.3.2005, 01:29
Цитата(ZX @ 18.3.2005, 16:24)
Почему не пахло? Mono.


Какая это кроссплатформенность? Это проект вообще не мелкософтный; потому никакой гарантии никто не дает. Это раз. А два - посмотри как пишут программы на C#. Сплошные ансейфы, работа с виндозными неймспейсами и пр ...

Автор: sergejzr 19.3.2005, 01:32
Цитата(ZX @ 19.3.2005, 00:18)
Смысл Jav'ы теряется.. Получается очередной J#.


Смысл Явы как раз её концепт как языка. Кроссплатформенность - побочный эффект. Очень приятный, но не всегда ключевой при выборе smile

Автор: S.A.P. 19.3.2005, 01:34
Цитата(Domestic @ 19.3.2005, 01:21)
Дык есть же .NET CLR и Managed C++
ну дык отдать идею в нормальные руки (не Microsoft smile ) и забацать машинку, которая переводит C++ в тот же байт-код smile . Я же могу использовать указатели, шаблоны, перегрузки операторов на всех платформах с одинаковым успехом. Не было бы Java smile .

Автор: ZX-80 19.3.2005, 01:35
Цитата(Domestic @ 19.3.2005, 01:29)
А два - посмотри как пишут программы на C#. Сплошные ансейфы, работа с виндозными неймспейсами и пр ...

MS планирует закрывать всю функциональность WinApi FCL'ом. Надеюсь что потребности в упомянутых тобою вещах не будет возникать...

Автор: LSD 19.3.2005, 01:39
Цитата(Perchilla @ 19.3.2005, 01:34)
забацать машинку, которая переводит C++ в тот же байт-код

Есть куча компиляторов в байт код(не из Java). Но при этом часто теряется возможность нормальной работы с framework.

Автор: S.A.P. 19.3.2005, 01:41
Цитата(LSD @ 19.3.2005, 01:39)
Но при этом часто теряется возможность нормальной работы с framework.
наврное потому что он изначально разрабатывался для Java. Так кто виноват? smile

Автор: Domestic Cat 19.3.2005, 01:41
Цитата(ZX @ 18.3.2005, 16:35)
MS планирует закрывать всю функциональность WinApi FCL'ом. Надеюсь что потребности в упомянутых тобою вещах не будет возникать...


С нелегкой руки господина Страуструпа они появился аргумент о "миллионах строк кода". За 4 года сколько написано? И что, все это переведут в кроссплатформенный код?
Почему за это время микрософт не позаботился о .НЕТ хотя бы под линух?
И будет ли вообще .НЕТ Винда? Вот тут автор сильно сомневается
http://www.ddj.com/documents/s=9211/ddj050201dnn/

Автор: sergejzr 19.3.2005, 01:41
Цитата(Perchilla @ 19.3.2005, 00:34)
Я же могу использовать указатели, шаблоны, перегрузки операторов на всех платформах с одинаковым успехом.

Походы указателями одинакого на разных платтформах ? smile
В яве поэтому стандартизированы типы.

Автор: LSD 19.3.2005, 01:45
Цитата(Perchilla @ 19.3.2005, 01:41)
наврное потому то он изначально разрабатывался для Java.

Не обязательно, например попробуй к LISP прикрутить MFC.

Автор: S.A.P. 19.3.2005, 01:46
Цитата(sergej @ 19.3.2005, 01:41)
Походы указателями одинакого на разных платтформах ?
почти. Да и типы там стандартизированы с помощью различных кросплатформенных библиотек. А потом я же не собираюсь с указателями вытворять что - нибудь невообразимое smile .

Автор: sergejzr 19.3.2005, 01:48
Цитата(Perchilla @ 19.3.2005, 00:46)
А потом я же не собираюсь с указателями вытворять что - нибудь невообразимое

Но ведь возможность имеется, а значит потенциальные грабли.
Добавлено @ 01:52
Вообще факт то, что на яве за короткое время можно больше написать полезного кода, чем на Си. (У меня по крайней мере). Хотя на Си прогил намного дольше (ещё когда ява была не распространена).

Программируя на си думаешь об освобождении памяти и не ускакивания в какие нибудь пространства памяти.
Программируя на яве думаешь почти исключительно про свой алгоритм.

Автор: LSD 19.3.2005, 01:58
Цитата(sergej @ 19.3.2005, 01:48)
Программируя на си думаешь об освобождении памяти и не ускакивания в какие нибудь пространства памяти.

Когда я програмлю, у меня всегда голова болит, все ли ссылки я освободил.

Автор: Domestic Cat 19.3.2005, 06:22
Цитата(Perchilla @ 18.3.2005, 16:34)
Я же могу использовать указатели, шаблоны, перегрузки операторов на всех платформах с одинаковым успехом. Не было бы Java smile .

В том то и дело, что не можешь - это я насчет указателей; если ты имеешь в виду указатели в нынешнем С++ виде. Там где можно отвлечься от конкретного адреса памяти, указатель вообще не нужен. Убери его - получишь Java переменную. Там где он нужен - там приложение уже непереносимо с одной ос на другую.
Синтаксис Java такой же как у С++, только убраны * и -> за ненужностью. Есть интерфейсы, как в КОМ, что очень большой плюс. Никаких тебе МФЦ / АТЛ и проч - все собрано в 3 SDK - Standard edition, Enterprise Edition, Micro Edition. Множество полезных тулзов - Ant, XDoclet, ... Переписывать все это еще и под С++, имхо, пустая работа. Вон Микрософт захотел придавить Java - и быстренько состряпал 44 языка НЕТ, причем многие библиотеки FCL были по спешке переделаны из VB и WFC. И толку? Сотрудничество с Сан дало бы им гораздо больше.

Автор: JAnty 19.3.2005, 14:02
Да... Я сделал вывод, С++. Если говорить, что программист должен искать более простое решение задачи, то возможно Джава, а зачем, если есть VB.

Автор: Kaskad 19.3.2005, 14:44
Интересно smile , какие перспективы у JAVA перед .NET smile ? Не вытеснит ли "нет" жабу? Последнее время, только и слышу smile , что java умрёт smile . Но тем не менее всё чаще и чаще замечаю, что JAVA-программисты востребованы. Взгляните на предлагаемые з/п! Очень впечатляют. smile

Автор: Kaskad 19.3.2005, 16:50
Цитата(Domestic @ 19.3.2005, 06:22)
Сотрудничество с Сан дало бы им гораздо больше.

Не согласен. Мелкийсофт любой ценой хочет задавить SUN и остаться монополистом.

Добавлено @ 16:53
Вообще, хватит давать дяде Билли возможность оставаться монополистом!НУжно любой ценой отвязаться от его вездесущей оси! Один из выходов - пересесть, главным образом, на java. smile

Автор: Domestic Cat 19.3.2005, 21:15
Цитата(Kaskad @ 19.3.2005, 05:44)
Не вытеснит ли "нет" жабу? Последнее время, только и слышу smile , что java умрёт

Это отдел маркетинга мелкософта так думает. Он также думает, что НЕТ кроссплатформенный и что ВС.НЕТ - чудо из чудес. Точнее, не думает, а делает такую рекламу, ибо не похвалишь - не продашь.
Не вытеснит он никого.

Цитата(JAnty @ 19.3.2005, 05:02)
Если говорить, что программист должен искать более простое решение задачи, то возможно Джава, а зачем, если есть VB.

Мда. Запомни: у с++ - одни задачи, у Java - другие, у ВБ - третьи. с++ нужен для системных вещей, для части десктоп приложений, для ресурсоемких штук типа игр, для поддержания готовых с++ проектов. На с++ НИКТО не будет писать веб приложения, сервиса, корпоративные приложения, кроссплатформенные приложения. Java устраняет часть (редко необходимых ) сложностей с++; и это само по себе хорошо. Java - 100% ОО язык, в отличие от С++. Сравнивать его с ВБ - глупо, тут разговору нет. И не надо думать, что Java - раз плюнуть, просто программист Java меньше отвлекается на ненужные манипуляции с указателями, удалениями и проч. Но ни один из супер-пупер с++ программеров, включая и тебя в том числе, даже после пары лет изучения Java не будет понимать и десятую долю Java технологий. Это другой уровень, на нем ВБ6 и не стоял, а с++ на него забраться не успел, как его Java выкинула.
Цитата
Если говорить, что программист должен искать более простое решение задачи

Программер обязан искать простое решение. Также, как никто не делает двери в потолке или унитаз на стене на высоте трех метров. В реальной жизни никакой радости писать сложный код нет. После тебя приходит, возможно, не один человек - поддерживать приложение. Само написание программы - это 20-30% времени, остальное - дебаггинг и документация. И сложный код здесь как та самая дверь в потолке - готов убить строителя.
Потому программист должен подходить к задаче с другой точки зрения - выбирать язык программирования не из соображений крутизны, простоты или сложности, а исходя из того, что больше подходит. И подходить объективно, а не эмоционально, как многие тут делают. Т.к. работает программист не для того, чтобы показать, что он умеет прибавить к указателю единицу, а из того, понятно ли будет это ему самому через месяц; или кому-то другому через год; исходя из той выгоды, которую даст использование с++ для данной задачи.

Наверняка ты не знаешь ту же Java, насчет ВБ - не знаю. Поэтому мой совет - сначала выучи язык, потом напиши маленький проект, тысяч на 10 строк, а потом напиши то же на с++. И сравни. Хороший программер напишет такой проект на Java быстрее чем на С++ - раза в 3-4, при аналогичной функциональности и дополнтельной кроссплатформенности.

Автор: JAnty 20.3.2005, 14:10
Что получается? У Джавы есть конкурент или он один в своём роде.
Дж. я изучал поверхностно "синтоксис", не углублялся.
Углублюс поглубже.

Автор: S.A.P. 20.3.2005, 14:48
Хм smile . Судя по всему один только синтаксис там достаточно поверхностен, по отношению к технологиям, которые Java предоставляет.

Автор: pablo 20.3.2005, 15:18
Вот что про это думают наши западные коллеги:
Цитата


C++ Programming HOW?TO
Al Dev (Alavoor Vasudevan) alavoor@yahoo.com


1.1 C++ v/s Java
C++ is one of the most powerful language and will be used for a long time in the future inspite of emergence
of Java. C++ runs extremely fast and is in fact 10 to 20 times FASTER than Java. Java runs very slow
because it is a byte?code?interpreted language running on top of "virtual machine". Java runs faster with JIT
(Just?In?Time) compiler, but it is still slower than C++. And optimized C++ program is about 3 to 4 times
faster than Java (with JIT compiler). Then, why do people use Java? Because it is pure object oriented and is
easier to program in Java, as Java automates memory management, and programmers do not directly deal
with memory allocations. This document attempts to automate the memory management in C++ to make it
much more easy to use. The library given here will make C++ look like Java and will enable "C++" to
compete with Java language.
Because of manual memory allocations, debugging the C++ programs consumes a major portion of time.
This document will give you some better ideas and tips to reduce the debugging time.

Автор: Domestic Cat 20.3.2005, 19:11
Че-то слабовато они думают...

Цитата(pablo @ 20.3.2005, 06:18)
C++ runs extremely fast and is in fact 10 to 20 times FASTER than Java. Java runs very slow
because it is a byte?code?interpreted language running on top of "virtual machine". Java runs faster with JIT
(Just?In?Time) compiler, but it is still slower than C++.


Это было (в 10-20 раз медленее) 10 лет назад. Сейчас - читай пой пост в этой теме или
http://www.sys-con.com/story/?storyid=45250

Автор: pablo 21.3.2005, 14:50
Убедили, я неправ, но, несчитаете ли вы что производительность приложения зависит от компилера с которым он собран ??? (Это про С++).
И вот ещё один вопрос: если уж Ява такой шустрый, так почему же большенство игр(прог где нужна производительность) пишутся всё же на C/С++ ???

Добавлено @ 14:55
Убедили, я неправ, но, несчитаете ли вы что производительность приложения зависит от компилера с которым он собран ??? (Это про С++).
И вот ещё один вопрос: если уж Ява такой шустрый, так почему же большенство игр(прог где нужна производительность) пишутся всё же на С++ ???

Автор: S.A.P. 21.3.2005, 14:59
pablo ответ тут был уже дан. А мне вобще не понятно, как Java, которая сама написана на C может обгонять его по производительности?

Автор: batigoal 21.3.2005, 15:10
Думаю, это все же частные случаи. Java проигрывает в целом по производительности, но умренно, пропасти здесь нет.

Автор: Domestic Cat 21.3.2005, 18:55
Цитата
pablo ответ тут был уже дан. А мне вобще не понятно, как Java, которая сама написана на C может обгонять его по производительности?


Не может конечно, но как сказал Lamer George, серьезной разницы нет. Java 1.5 довольно неплохо оптимизирована, работает с OpenGL, в полноэкранном режиме хороший фпс, можнo работать с видеопамяью, пользовать нативные буфера.

Автор: 3,14 22.3.2005, 17:15
Цитата(Domestic @ 18.3.2005, 21:05)
Java - J2EE приложениe будет одинаковo работать нa Макe, винде, линухe или солярисе. Вообще без каких-либо изменений и перекомпиляции. с++ - нет.

Эх, не всегда, я тут с ant-ом при установке Tomcat под федорино горе замучался

А вообще мне Java больше нравиться, в её пользу говорит то, что большинство людей, много програмировавших и на Java и на C++ всё же выбирают Java.

Автор: _hunter 23.3.2005, 19:30
тут дело скорее не в людях, а в их менеджерах smile

Автор: Domestic Cat 23.3.2005, 21:41
Цитата
а в их менеджерах


Каk раз речь шлa о людях.

Автор: _hunter 23.3.2005, 23:30
Цитата
людей, много програмировавших

я это понял как упоминание о программерах...
если не прав -- сорри

Автор: Domestic Cat 23.3.2005, 23:35

Я не пойму, что ты пытаешься доказать. Менеджеры навязывают Java? Нu так нe только Java, но и C++, .NET, и все остальное. Не нравится - увольняйся.

3,14 сказал, что большнство людей, знающих обa языка, выбирает Java. это его мнение, основанное видимо на личном опытe.


Автор: _hunter 24.3.2005, 14:56
ничего я не пытаюсь.
просто выбирают где? -- в домашних поделках? или приходят на фирму и говорят: "мне пофиг на чем вы все тут пишите и писать я буду на яве". так что ли?

Автор: Kaskad 24.3.2005, 14:59
Цитата(_hunter @ 24.3.2005, 14:56)
в домашних поделках?

на западе ява во все дыры имеет Си. Скоро волна и к на дойдёт. smile

Автор: 3,14 24.3.2005, 15:06
Цитата(_hunter @ 24.3.2005, 14:56)
просто выбирают где? -- в домашних поделках? или приходят на фирму и говорят: "мне пофиг на чем вы все тут пишите и писать я буду на яве". так что ли?

Программисты нужны и пишущие на C++, и пушищие на Java, если ты хороший программист (это понятие обязательно включает стаж в серьёзных проектах) то ты устроишся в любом случае

Автор: Domestic Cat 24.3.2005, 19:35
Цитата
просто выбирают где? -- в домашних поделках? или приходят на фирму и говорят: "мне пофиг на чем вы все тут пишите и писать я буду на яве". так что ли?


Речь идеt о личных предпочениях, они есть у каждогo и необязательно совпадают с теm, что используешь по работe.

Автор: _hunter 24.3.2005, 19:39
угу. и толку с таких предпочтений?:
есть у меня супер убовь -- в воде не горит, в огне не тонет а издому в ней лучше не выходить -- рассыплется ( ибо тапочки это домашние )
так что ли?

Автор: Domestic Cat 24.3.2005, 19:59
Цитата
угу. и толку с таких предпочтений?:
есть у меня супер убовь -- в воде не горит, в огне не тонет а издому в ней лучше не выходить -- рассыплется ( ибо тапочки это домашние )
так что ли?


Нуsоздавай топик "Личные предпочтения - толку от них?", а тут флудить нe нужно.

Автор: ZAVS 25.3.2005, 04:35
по моему С++ имеет свое место , JAVA свое

я только не понимаю кому нужен С#
не лучше было бы не копировать JAVA-у и тратить время , а помогать развивать его

по моему опыту(небольшому) знаю что большинство корпоротивных приложений(на java) пишутся и компилируются на windows, а работают на linux-e , так что microsoft подерживая javu не теряет а
больше выигрывает .

Автор: Sun 25.3.2005, 11:12
Цитата(ZAVS @ 25.3.2005, 01:35)
по моему С++ имеет свое место , JAVA свое

я только не понимаю кому нужен С#
не лучше было бы не копировать JAVA-у и тратить время , а помогать развивать его

Золотые слова. Только Майкрософту не с руки так просто отдавать рынок. Для этого и придумываются модные штучки вроде .Net, которые создавались исключительно в маркетинговых целях. Радует что у Майкрософта достаточно денег даже чтобы тянуть бесперспективные и убыточные проекты и может со временем из .Net получится что-нить хорошее.

Автор: _hunter 25.3.2005, 15:21
насколько я помню МС пытались получить исходники/лицензию чтобы писать яву, но что-то у них не сложилось с сан-ом ( кажись по поводу лицензирования не сошлись )

Автор: Domestic Cat 25.3.2005, 19:54
Цитата(_hunter @ 25.3.2005, 06:21)
насколько я помню МС пытались получить исходники/лицензию чтобы писать яву, но что-то у них не сложилось с сан-ом ( кажись по поводу лицензирования не сошлись )


Обычно мелкософт переделывает все как ему хочется, последний раз Сан его за это и засудил.
http://java.sun.com/lawsuit/

Автор: 3,14 28.3.2005, 09:11
Цитата(ZAVS @ 25.3.2005, 04:35)
я только не понимаю кому нужен С#

А меня C# очень порадовал, ничего более удобоного и в то же время мощного для написания виндовых приложений я ещё не видел

Автор: juriy9 16.8.2005, 12:21
По-моему чем обсуждать что лучше ява или си, полезнее было бы обсуждать что-нибудь вроде "Как выбрать язык для той или иной задачи". Я понимаю сравнивать ATI и nVidia, DirectX и OpenGL, но сравнивать си и яву - всё равно что взять задачу - попасть из точки A в точку B, имея в начилии велосипед, машину, самолёт, не уточняя каково расстояние между A и B и обсуждать, что лучше использовать чтобы решить эту задачу (попасть из A в B).

Автор: sergejzr 16.8.2005, 12:41
juriy9, дык полгода назад уже эта тема стала неинтерестна smile Посмотрите дату последнего сообщения smile

Автор: AIF 12.4.2008, 19:18
Цитата
Почему говорят что Java это улучшенный С++.
Это так или у них больное сознание?

Цитата
Ява - ето действительно улучшенный С++ и для етого есть несколько существенных причин.


  Что толком мешает рассмотреть в этих двух языках ЕДИНУЮ систему программирования, с учетом основных сходств и различий ... ?      smile 
  Существуют ли подобные методики ... 



Автор: mr.DUDA 13.4.2008, 01:49
AIF, некрофил  smile 

Автор: Мастер 30.5.2008, 15:05
Если Java - это улучшенный C++, то автомобиль - это усовершенствованная конка. (Впрочем - почему нет? Ведь и то и другое - средство передвижения.)

C++ реализует обе (взаимоисключающие) технологии: процедурную и объектноориентированную.

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

 Java - не позволяет использовать указатели, и если вы хотите научиться программировать профессионально, то -  начните с Java, версии 1.1. 

Java первая компактна, имеет исходники, которые писали проффи. У них есть чему поучиться.
Java 2 - монстр, выродок, который растратил все, доставшееся от родителя, наследство.

Я помню, как появилась Java. Это было большое событие в программировании. Почему?

До сих пор, программы написанные под виндами - работают, если им разрешил это Билл, т.е.  - только под виндами, только на процессорах, совместимых с Intel.

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

Java решила эту проблему, разделив разработчиков железа(Intel, к примеру), от разработчиков софта(Microsoft, к примеру). 

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

На Java возлагались большие надежды. Но, увы. Здесь чтото не срослось.


Автор: Lazin 30.5.2008, 15:59
Цитата(Мастер @  30.5.2008,  15:05 Найти цитируемый пост)
C++ реализует обе (взаимоисключающие) технологии: процедурную и объектноориентированную.

это чем-же эти технологии взаимоисключающие?
Java - не поддерживает процедурщину?

Цитата(Мастер @  30.5.2008,  15:05 Найти цитируемый пост)
Если программист "пишет в объектах", и приэтом - использует указатели, как это принято в С (а С++ это позволяет, к сожалению), то это означает, что программист не понимаете основных идей объектноориентированного программирования. Многие начинающие програмисты (начинающие программировать с С++) надолго "клинят мозгами" на этой "особенности" С++.

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

Автор: LSD 30.5.2008, 16:25
Так, первый купился, ждем дальше smile 

Автор: JackYF 30.5.2008, 16:29
Цитата(Мастер @  30.5.2008,  14:05 Найти цитируемый пост)
Если программист "пишет в объектах", и приэтом - использует указатели, как это принято в С (а С++ это позволяет, к сожалению), то это означает, что программист не понимаете основных идей объектноориентированного программирования. Многие начинающие програмисты (начинающие программировать с С++) надолго "клинят мозгами" на этой "особенности" С++.

Лол. Сейчас ты нам объяснишь, что указатели - это зло?

Цитата(Мастер @  30.5.2008,  14:05 Найти цитируемый пост)
Java решила эту проблему, разделив разработчиков железа(Intel, к примеру), от разработчиков софта(Microsoft, к примеру). 

Дважды лол. На скольких архитектурах работает Java, и на скольких - семейство компиляторов GCC?

Автор: LSD 30.5.2008, 16:38
Второй smile 

Автор: Kangaroo 30.5.2008, 16:42
Цитата(LSD @  30.5.2008,  16:38 Найти цитируемый пост)
Второй

 smile

Добавлено через 1 минуту и 25 секунд
Lazin, 
JackYF, 
если я не ошибаюсь, это автор, который в соседней теме пишет магазины только под ИЕ  smile Так что спорить нету смысла  smile 

Автор: Lazin 30.5.2008, 18:45
щас мы ему пустим кровь smile 
где моя бензопила smile 

Автор: JackYF 30.5.2008, 22:10
Цитата(Kangaroo @  30.5.2008,  15:42 Найти цитируемый пост)
если я не ошибаюсь, это автор, который в соседней теме пишет магазины только под ИЕ 

Я видел. Но не оставлять же ж такие аргументы просто так. Да и пофлеймить можно.

Автор: nerezus 30.5.2008, 22:22
Цитата

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

Автор: Mayk 31.5.2008, 04:56
Цитата(Мастер @  30.5.2008,  19:05 Найти цитируемый пост)

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

Какой феерический бред.  http://www.top500.org/list/2007/11/100 думает до другому. 

Цитата(Мастер @  30.5.2008,  19:05 Найти цитируемый пост)

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

Наследование, инкапсуляция, полиморфизм. Итак. Как они в рамках С++ быть реализованы без указателей?  smile

Добавлено через 1 минуту и 36 секунд
Цитата(JackYF @  31.5.2008,  02:10 Найти цитируемый пост)
Да и пофлеймить можно.

 smile    smile

Автор: Мастер 31.5.2008, 10:18
Цитата
Наследование, инкапсуляция, полиморфизм. Итак. Как они в рамках С++ быть реализованы без указателей?


В С (я это ещё помню) есть процедура сортировки массива. Называется qsort(). Ей, чтоб отсортировать массив, нежно передать два указателя: на массив и на функцию, выполняющую сравнение элементов.

В С++ - вы тоже её пользуете? (Не боитесь перпутать местами указатели?)

Я почему спрашиваю: в Java нет такой функции, и когда у меня возникала потребность сортировать, а я тогда (в начале 90-х) в С под Юниксом программировал, тогда только я и понял идеи, название которых вы знаете, но - понимаеите ли?


Цитата
матчасть думает до другому

Ссылку посмотрел, но - не понял о чём они думают.

Так - о чём думает матчасть? (Поясните, пожалуйста.)

Автор: nerezus 31.5.2008, 10:31
Цитата

Я почему спрашиваю: в Java нет такой функции,
 Бла бла бла ))
Есть там все. Только не функция это. В джаве вообще функций нету(в глобальном смысле), если ты не знал.

Arrays.sort(массив, класс с интерфейсом Comparator)

Цитата

тогда только я и понял идеи, название которых вы знаете, но - понимаеите ли?
 Конечно понимаю. А ты?

Автор: JackYF 31.5.2008, 10:32
Цитата(Мастер @  31.5.2008,  09:18 Найти цитируемый пост)
В С++ - вы тоже её пользуете?

Не поверишь, в С++-коде можно свободно использовать std::sort. Кури STL.

Автор: Lazin 31.5.2008, 10:34
Цитата(Мастер @  31.5.2008,  10:18 Найти цитируемый пост)
В С (я это ещё помню) есть процедура сортировки массива. Называется qsort(). Ей, чтоб отсортировать массив, нежно передать два указателя: на массив и на функцию, выполняющую сравнение элементов.

да есть такая
Цитата(Мастер @  31.5.2008,  10:18 Найти цитируемый пост)
В С++ - вы тоже её пользуете?

нет, мы пользуем контейнеры, предикаты сравнения и обобщенные алгоритмы smile 

Автор: Мастер 31.5.2008, 10:37
Авот это - C++ проглотит?
Цитата
Arrays.sort(массив++, Comparator++)

Или так:
Цитата
Arrays.sort(Comparator, массив)


(Лет пятнадцать назад - запросто.)

Цитата
На скольких архитектурах работает Java, и на скольких - семейство компиляторов GCC?


Я же говорю - не срослось. Непонятно - что помешало? Идея то - ах! - какая красивая. Думаю - голова у SUN разболелась от успеха. (А успех был, точно.) Они сделали ошибку, выпустив Java2. Этот монстр всё и испортил.

А лучше Java1 до сих пор ни кто ничего не сделал.

На Java1 я ещё под Win98 сделал HTML-сервер. (HTML-страничка сервер.) Кто из вас такие штуки умеет делать сегодня. (Судя по тому, как работают форумы - никто.)

Автор: Lazin 31.5.2008, 10:45
Цитата(Мастер @  31.5.2008,  10:37 Найти цитируемый пост)
Авот это - C++ проглотит?

да, есть аналоги, только в отличие Java, контейнер будет содержать объекты нужного типа, а не object

Автор: Мастер 31.5.2008, 10:52
Цитата
да, есть аналоги, только в отличие Java, контейнер будет содержать объекты нужного типа, а не object
Я правильно понял: в обоих случаях компилятор предупреждать не станет. (Если можно - подробнее.)

Java - потомок С++. Это прада. Именно поэтому Java не может быть хуже С++. Более того, Java обязана быть лучше. И это - так и есть. Java навязывает писать в объектах, учит этому, а С++ - запутывает.

Автор: nerezus 31.5.2008, 10:55
Цитата

На Java1 я ещё под Win98 сделал HTML-сервер. (HTML-страничка сервер.) Кто из вас такие штуки умеет делать сегодня. (Судя по тому, как работают форумы - никто.)
 И как? Песочница разве разрешила биндить порт? )
если разрешила - то можешь гордиться этими несколькими строчками))

Автор: Мастер 31.5.2008, 11:04
Что есть "Песочница"?

Как?:

JScript передает строку Java аппрету, тот (через сокет) - в серылет, а сервлет (по сокетам) рассылает сообщения другим апплетам. Далее: аплеты вызывают функции JScript.

Возможно, я продемонстрирую в работе чат, типа ICQ. Но, в отличии от ICQ, на клиентскую машину никакого дополнительного ПО ставить не нужно.

Есть у меня скрипт на базе этого чата. Его можно встроить в любую HTML-ку. (Т.е. - неважно, с какого хоста скрипт был загружен.) Чат будет работать.

Эта технология позволяет реализовать общение посетителей в реальном времени. (Например, можно реализовать Internet-аукцион.)

Но самая крутая вешь, которую можно было бы реализовать в IE (начиная с версии 5.5) - это игра Contr-Strike. (И опять - никакого дополнительного ПО - только стандартный виндусовый клиент.)

Дело в том, что в IE(начиная с версии 5.5) входит технология векторной 3D-графики. Посмотреть пример можно http://people.nnov.ru/master/demo/hause/,http://people.nnov.ru/master/demo/rotation/ и http://people.nnov.ru/master/demo/spider/.

Это - примеры 2001 года. Эти возможности появились давно, ещё в Win98, но - где, в каком сайте эти возможности были реалиованы. В зоне RU я таких не видел. (Если вы видели - ссылку дайте, пожалуйста.)

Автор: Lazin 31.5.2008, 11:07
Цитата(Мастер @  31.5.2008,  10:52 Найти цитируемый пост)
Java - потомок С++. Это прада. Именно поэтому Java не может быть хуже С++. Более того, Java обязана быть лучше. И это - так и есть. Java навязывает писать в объектах, учит этому, а С++ - запутывает.

если уж на то пошло, то Java - потомок С++ начала 90-х и у нее мало общего с современным С++

Автор: Мастер 31.5.2008, 11:24
Цитата
Java - потомок С++ начала 90-х
Допускаю. Тогда я - не прав, если докажите.

Что есть "Песочница"? (Не научился я ещё ботать по вашей фене.)

Автор: Mayk 31.5.2008, 11:41
Цитата(Мастер @  31.5.2008,  14:18 Найти цитируемый пост)

В С++ - вы тоже её пользуете? (Не боитесь перпутать и местами их поменять?)

Нет конечно. Есть std::sort. Он,кстати, уделывает qsort, так как компилятор без проблем можеть за-inline-ить компаратор, в отличии от qsort'а.

Цитата(Мастер @  31.5.2008,  14:18 Найти цитируемый пост)

Так - о чём думает матчасть? (Поясните, пожалуйста.)

Ты говорил феерический бред что
Цитата

Если вы гениальный инженер, и создали супер компьютер, который победил всех, то - окажется - ваше изобретение никому не нужно, потому, что нет для него ОС и софта для него.

я привёл ссылку на список из полтысячи супер компьютеров, для которых есть даже не одна ОС. Список осей - http://www.top500.org/stats/list/30/os. 

Цитата(Мастер @  31.5.2008,  14:37 Найти цитируемый пост)

А лучше Java1 до сих пор ни кто ничего не сделал.

Цитата(Мастер @  31.5.2008,  14:52 Найти цитируемый пост)
Это прада. Именно поэтому Java не может быть хуже С++. Более того, Java обязана быть лучше. И это - так и есть.

Цитата(Мастер @  31.5.2008,  14:18 Найти цитируемый пост)

Я почему спрашиваю: в Java нет такой функции, и когда у меня возникала потребность сортировать, а я тогда (в начале 90-х) в С под Юниксом программировал, тогда только я и понял идеи, название которых вы знаете, но - понимаеите ли?

Мы так и не увидели альтернатив указателям в си++ мире. Выкрики "ява1 рулед а все остальное сосёд" хороши для детсада. Если есть что сказать аргументировано - говори.

Добавлено @ 11:46
Цитата(Мастер @  31.5.2008,  15:24 Найти цитируемый пост)
Допкскаю. Тогда я - не прав, если докажите.

Ответь на два простых вопроса(и да поможет те гугл)
В каком году появилась ява? В каком году появился стандарт с++?

Автор: nerezus 31.5.2008, 12:05
Цитата

Что есть "Песочница"? (Не научился я ещё ботать по вашей фене.)
 Надеюсь, что такое апплет ты хоть знаешь? Хотя наверняка нет. Короче джаву можно засунуть на страницу в браузере. Это ты тоже притворяешься, что не знаешь.
В ней есть такое понятие, как песочница(sandbox). Оно запрещает использовать те функции джавы, которые могут навредить машине пользователя.

Автор: Мастер 31.5.2008, 12:06
Цитата
я привёл ссылку на список из полтысячи супер компьютеров, для которых есть даже не одна ОС
Сколько стоит написать ОС и софт под компьютер? Сколько стоят компиляторы. (Если сравнивать со стоимостью разработки компьютера.) Я к тому, что - дорого. Идеи, заложенные в Java, должны были кардинально решить эту проблему.

Java1 может работать на кластере или на многопроцессорной машине. Механизм синхронизации процессов в ней проработан. А в C++ механизм этот есть? (Когда я читал Страуструпа - не было.)

Как распараллелить Linix на кластер и многопроцесссорную машину? В этой ОС есть такая возможность? В какой есть? В каком языке?
_______________________________________________
Что такое applet я знаю лет десять. (Читай выше.) Но то, что в неём чтото называют песочницей, впервые услышал сегодня.

Автор: MAKCim 31.5.2008, 12:21
Цитата(Мастер @  31.5.2008,  12:06 Найти цитируемый пост)
Как распараллелить Linix на кластер и многопроцесссорную машину? В этой ОС есть такая возможность? В какой есть? В каком языке?

масштабируемость у Linux крайне высокая, так что никаких проблем нет
что касается языков, то Ada, если имеется в виду средствами языка (aka синтаксис и семантика), а не библиотек
JVM предоставляет java-классы, как обертки над API хостовой системы
тоже самое предоставляет, например, тот же boost (имеется в виду работа с потоками)

Автор: Мастер 31.5.2008, 12:29
Цитата
В каком году появилась ява? В каком году появился стандарт с++?

С++ появился в конце 80-х.
Java - в середине 90-х.
(Если мне не изменяет память.)
И что? С++ от это лучше? Уверяю вас нет. С++ вынуждена тащить за собой возможности, которые были в С. (С - процедурный язык.)

Java появилась позже. Java - это С++, из которого выкинуто всё, что противоречит парадигме ООП, и в неё добавлена виртуальная машина, автоматическая сборка мусора и синхронизация параллельных процессов. В Java есть апплет, а в С++ - он есть? smile 

Цитата
масштабируемость у Linux крайне высокая, так что никаких проблем нет
Unix и раньше был масштабиркемым. Достаточно было переписать сишное ядро. Но Си - процедурный язык. В нем нет механизма синхронизации процессов. Процедурный вообще трудно распараллелить.

Впрочем, наша академия наук распараллеливает фортран. Хвастают этим. (Крутые ребята. smile )

Я это к тому, что фортран тоже можно распараллелить, а уж С++... (Может - во втором случае это сделать легче?)

Компания SUN взяла за основу Unix, переписала её на Java, так получился Solaris. И это - правильно. (Никаких С++.)
Цитата
что касается языков, то Ada, если имеется в виду средствами языка (aka синтаксис и семантика), а не библиотек
JVM предоставляет java-классы, как обертки над API хостовой системы
тоже самое предоставляет, например, тот же boost (имеется в виду работа с потоками)
Тут я я не понял.  smile

Автор: MAKCim 31.5.2008, 12:40
Цитата(Мастер @  31.5.2008,  12:29 Найти цитируемый пост)
С++ появился в конце 80-х.

в начале-середине  smile 

Цитата(Мастер @  31.5.2008,  12:29 Найти цитируемый пост)
И что? С++ от это лучше?

и что, Java от этого лучше?

Цитата(Мастер @  31.5.2008,  12:29 Найти цитируемый пост)
С++ вынуждена тащить за собой возможности, которые были в С

1. это плохо?
2. С++ это она?  smile 

Цитата(Мастер @  31.5.2008,  12:29 Найти цитируемый пост)
и в неё добавлена виртуальная машина, автоматическая сборка мусора и синхронизация параллельных процессов

и что?
все это нужно для абстагирования от деталей конкретной платформы при написании прикладных приложений
это одна из целей Java
решать низкоуровневые задачи ей не под силу
иными словами Java заточена под прикладную область
С++ же успешно справляется с разноплановыми задачами

Добавлено @ 12:51
Цитата(Мастер @  31.5.2008,  12:29 Найти цитируемый пост)
Но Си - процедурный язык. В нем нет механизма синхронизации процессов. Процедурный вообще трудно распараллелить.

 smile  smile  smile  smile  smile  smile  smile 
это в юмор однозначно

как компилятор будет распараллеливать код ядра, если к моменту его компиляции средства распараллеливания еще не известны?  smile 
или нам нужно сначала написать компилятор, реализующий вызовы функций распараллеливания еще нескомпилированного ядра, реализующего функции распараллеливания?

Автор: MAKCim 31.5.2008, 12:55
Цитата(Мастер @  31.5.2008,  12:29 Найти цитируемый пост)
Тут я я не понял.

значит конструктивный разговор не получится
 smile

Добавлено через 1 минуту и 6 секунд
Цитата(Мастер @  31.5.2008,  12:29 Найти цитируемый пост)
Компания SUN взяла за основу Unix, переписала её на Java, так получился Solaris

 smile  smile  smile  smile  smile

Добавлено через 3 минуты и 27 секунд
Мастер, 
если вы тролль, то явно не профессиональный  smile 

Автор: W4FhLF 31.5.2008, 13:09
Не, это ж надо уметь... ничего не понимая в теме так убедительно говорить и даже находить какие-то аргументы smile

Автор: Мастер 31.5.2008, 13:20
Цитата
и что?
С++ же успешно справляется с разноплановыми задачами
Восколько обойдётся написание компилятора для С++ под новую железку?

Для Java достаточно написать компилятор байт кода. (Весьма простая програмулина.)

Цитата
решать низкоуровневые задачи Java не под силу

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

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

В будущем будет три уровня: уровень ядра (Си), уровень ОС(Java) и уровень интерфейса(DHTML). 

Библиотека AWT в Java, по части интерфейса, никуда негодная. Всё, что связано  с интерфеёсом в Java - плохо. Но этот недостаток легко компенсирует DHTML.

AWT (в Java1) изучать интересно. (Писали проффи.)
__________________________________________________________
Цитата
как компилятор будет распараллеливать код ядра, если к моменту его компиляции средства распараллеливания еще не известны?
А вам какая разница? Пусть об этому думает Java, в этом её преимущество.

Вам не нужно думать о том, как это происходит. Вам достаточно знать, что это есть и это работает.

Автор: nerezus 31.5.2008, 13:25
Цитата

Восколько обойдётся написание компилятора для С++ под новую железку?
 В написание компилятора C.

Цитата

Для Java достаточно написать компилятор байт кода. (Весьма простая програмулина.)
 Не проще вот только она. Хотя впринципе и не сложнее.

Добавлено через 1 минуту и 2 секунды

Автор: Мастер 31.5.2008, 13:31
Цитата
Не проще вот только она. Хотя впринципе и не сложнее.

При компиляции байт кода вам ненужно думать о валидности кода. Эти занимается компилятор Java. Поэтому - компилятор байт кода проще. Но, ядро java написан на Си. Поэтому получается, что (вроде бы) Вы правы. (Тут нужно изучать детали.)

А как это в Solaris-е сделано? (Есть там компилятор Си? Он там нужен?)

Автор: nerezus 31.5.2008, 15:20
Плохой тролль, плохой... выучи матчасть)

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

Солярис - обычная никса. Компилятор к ОС никакого отношения не имеет.

Давай так: ты учишь матчасть, потом снова пишешь вызывающие посты, ок?

Автор: MAKCim 31.5.2008, 18:12
Цитата(Мастер @  31.5.2008,  13:20 Найти цитируемый пост)
Для Java достаточно написать компилятор байт кода. (Весьма простая програмулина.)

а JVM кто будет писАть?  smile 


Цитата(Мастер @  31.5.2008,  13:20 Найти цитируемый пост)
Java должна синхронизировать процессы. Это то, для чего она создана.

убило  smile 

да, нафиг struts, spring, EJB, JSF и т. д


Цитата(Мастер @  31.5.2008,  13:20 Найти цитируемый пост)
Это то и плохо. Это делает С++ сложным языком

то, что не всякий сможет эффективно использовать С++, не делает его плохим ЯП


Цитата(Мастер @  31.5.2008,  13:20 Найти цитируемый пост)
Библиотека AWT в Java, по части интерфейса, никуда негодная

Цитата(Мастер @  31.5.2008,  13:20 Найти цитируемый пост)
AWT (в Java1) изучать интересно. (Писали проффи.)

 smile  smile 

Цитата(Мастер @  31.5.2008,  13:20 Найти цитируемый пост)
А вам какая разница? Пусть об этому думает Java, в этом её преимущество.
Вам не нужно думать о том, как это происходит. Вам достаточно знать, что это есть и это работает.

только ОС на Java я пока не встречал, а разговор то ведь о них

в общем, разберись в теме для ведения конструктивного разговора


Автор: Мастер 1.6.2008, 08:57
Цитата
да, нафиг struts, spring, EJB, JSF и т. д
Согласен. В Java1 много лишнего, а Java2 - весь такой.

Добавлено через 2 минуты и 32 секунды
Цитата
то, что не всякий сможет эффективно использовать С++, не делает его плохим ЯП
Инструмент должен быть простым и удобным в использовании, как скальпель хирурга. Не человека под инструмент нужно прогибать, а инструмент под человека.

Добавлено через 6 минут и 21 секунду
Цитата
Библиотека AWT в Java, по части интерфейса, никуда негодная

Цитата
AWT (в Java1) изучать интересно. (Писали проффи.)

Эти фразы не противоречат друг-другу. В одной речь идёт о форме, в другой - о содержании.

Профи написали профессионально програму, которая оказалась менее удобная, чем то, что написали другие проффи. (Вот и всё.)

Добавлено через 9 минут и 22 секунды
Цитата
только ОС на Java я пока не встречал, а разговор то ведь о них
Возможно я ошибаюсь, но Solaris - это Unix, с Си переписанный на Java. (Тут я неуверен, поскольку возможности познакомиться с этой ОС не имел. Только слухи имею.)

Автор: Мастер 1.6.2008, 09:17
Я рассказывал о том, для чего Java создавался, а что из этого получилось... Мне это и самому не нравится.

Автор: Alexandr87 1.6.2008, 10:16
Мастер, каждый пост - шедевр.  smile 

Автор: Любитель 1.6.2008, 10:37
Цитата(W4FhLF @  31.5.2008,  13:09 Найти цитируемый пост)
Не, это ж надо уметь... ничего не понимая в теме так убедительно говорить и даже находить какие-то аргументы

+100

Цитата(Мастер @  31.5.2008,  12:29 Найти цитируемый пост)
Компания SUN взяла за основу Unix, переписала её на Java, так получился Solaris. И это - правильно. (Никаких С++.)

Цитата(Мастер @  1.6.2008,  08:57 Найти цитируемый пост)
Возможно я ошибаюсь, но Solaris - это Unix, с Си переписанный на Java. (Тут я неуверен, поскольку возможности познакомиться с этой ОС не имел. Только слухи имею.)

Хде ж такие слухи-то берёшь?  smile 

Цитата(Мастер @  31.5.2008,  13:31 Найти цитируемый пост)
А как это в Solaris-е сделано? (Есть там компилятор Си? Он там нужен?)

 smile 

Цитата(Мастер @  1.6.2008,  08:57 Найти цитируемый пост)
Согласен. В Java1 много лишнего, а Java2 - весь такой.

 smile 


Автор: MAKCim 1.6.2008, 10:46
Цитата(Alexandr87 @  1.6.2008,  10:16 Найти цитируемый пост)
каждый пост - шедевр. 

некоторая логика в некоторых постах все же есть  smile 

Автор: chipset 1.6.2008, 11:23
Этот тред ещё жив? Вы пробовали писать веб-сервис на C++ с прозрачным доступом к нескольким БД который может исполняться на Линуксе а девелопиться на Виндовсах и Маках? А писать кроссплатформенное приложение которое переговаривается с железом и запускается без всякого инсталла на Вин 98? Для каждой области свои средства.

Автор: MAKCim 1.6.2008, 11:59
Цитата(chipset @  1.6.2008,  11:23 Найти цитируемый пост)
Вы пробовали писать веб-сервис на C++ с прозрачным доступом к нескольким БД который может исполняться на Линуксе а девелопиться на Виндовсах и Маках?

а сложность в чем?
1. берем аналог hibernate для C++ (dbagen к примеру)
2. используем только STL и кроссплатформенные библиотеки
что такое веб-сервис? программа, выполняющая запросы клиента и возвращающая результат
ее можно даже на ассемблере написать при желании
понятно, что для таких задач С++ не заточен, но реализовать можно

Цитата(chipset @  1.6.2008,  11:23 Найти цитируемый пост)
А писать кроссплатформенное приложение которое переговаривается с железом и запускается без всякого инсталла на Вин 98?

только для этого в случае Java сначала нужно JVM установить  smile 
C++-компилятор есть на большем числе платформ, нежели JVM
кроме того, что значит "переговаривается с железом"? что за железо? как переговаривается?

Автор: Мастер 1.6.2008, 20:19
Цитата
если вы тролль, то явно не профессиональный 

Цитата
Не, это ж надо уметь... ничего не понимая в теме так убедительно говорить и даже находить какие-то аргументы

Цитата
в общем, разберись в теме для ведения конструктивного разговора

Я не пишу на Си и CPP много лет. Много чего забыл. Сходу контроллер DMA, конечно, запрограммировать не смогу. Нужно вспоминать. Но - вспоминать не буду. Не хочу. Не хочу ветошью трясти. Алергия у меня на плесень.

Что касаемо квалификации моей.
Чтоб оценить квалификацию программиста, необходимо иметь квалификацию на порядок выше. К сожалению вы мне не даёте возможность оценить вашу квалификацию. Я вижу, что мне юнцы строят рожи( smile ) и у виска крутят. И это всё, что вы можете? Что - похвастать нечем? Языком только, по фене ботать, а руками и головой - слабо?

Покажите что нибудь. Уж очень зауважать хочется. (А пока, извините - никак.)

Автор: chipset 1.6.2008, 21:25
Цитата(MAKCim @  1.6.2008,  01:59 Найти цитируемый пост)
понятно, что для таких задач С++ не заточен, но реализовать можно

Понятно что на Java девелопмент займет пару недель, а на С++ месяцы... В чём вообще суть поста? Конечно, даже на Брейнфаке можно написать сервис но это не означает что это оптимально. А если ты разрабатываешь приложения в индустрии а не так поигратцо вышел то понимаешь что лучше использовать эффективные средства для каждой задачи а не выпендривацо программируя сервисы на асме.
Даже gSOAP по сравнению с Java Spring'ом или ASP.NET'ом сосёт и увеличивает количество багов, стоимость, и т.д... 

А за dBagen пасиба, не знал что такое даже есть smile
Цитата(MAKCim @  1.6.2008,  01:59 Найти цитируемый пост)
только для этого в случае Java сначала нужно JVM установить  smile 

Установить JVM это значит без инсталла? Без инсталла это значит "вставил флешку на пять минут - вытащил - пошёл дальше".

Добавлено через 4 минуты и 3 секунды
Цитата(MAKCim @  1.6.2008,  01:59 Найти цитируемый пост)
кроме того, что значит "переговаривается с железом"? что за железо? как переговаривается? 

Железа существует много, некоторое через COM порт, другое через USB, и хрен знаете через что ещё в будущем. Суть железа неважна. Переговаривается это значит: коннект - обменданными x n - дисконнект.

Добавлено через 12 минут и 51 секунду
Никто не сможет стать хорошим архитектором пока не откажется от своей детской привязанности к одному языку и не начнет прагматично выбирать средства исходя из задач.

Автор: MAKCim 1.6.2008, 21:50
chipset, 
я с тобой согласен
потому и написал

Цитата(MAKCim @  1.6.2008,  11:59 Найти цитируемый пост)
понятно, что для таких задач С++ не заточен

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

Цитата(chipset @  1.6.2008,  21:25 Найти цитируемый пост)
Железа существует много, некоторое через COM порт, другое через USB, и хрен знаете через что ещё в будущем. Суть железа неважна. Переговаривается это значит: коннект - обменданными x n - дисконнект.

и как это в Java сделано?

Автор: chipset 1.6.2008, 21:53
Цитата(MAKCim @  1.6.2008,  11:50 Найти цитируемый пост)
и как это в Java сделано? 

Йа во второй части поста писал про C++  smile  smile 
Цитата(chipset @  1.6.2008,  01:23 Найти цитируемый пост)
А писать кроссплатформенное приложение которое переговаривается с железом и запускается без всякого инсталла на Вин 98? 

вот эта фигня гораздо более эффективно пишетца на C++ smile
Мы с тобой по одну сторону баррикад ё!

Просто смысл поста в том Java и С++ полезны одинаково но в разных задачах.

ЗЫ. А на С++ естественно что всё можно написать, даже Java переписать а потом на ней написать сервис!  smile  smile  smile  smile 

Автор: MAKCim 1.6.2008, 22:01
Цитата(chipset @  1.6.2008,  21:53 Найти цитируемый пост)
вот эта фигня гораздо более эффективно пишетца на C++ 

с трудом представляю себе, как это можно сделать кроссплатформенно?  smile 

Автор: chipset 1.6.2008, 22:03
Цитата(MAKCim @  1.6.2008,  12:01 Найти цитируемый пост)
с трудом представляю себе, как это можно сделать кроссплатформенно?  smile  

Кроссплатформенно в принципе и не надо.. Я это не из неба вытягиваю, это реальные проекты над которыми я щаз работаю smile

Автор: Мастер 2.6.2008, 09:04
Цитата(chipset @ 1.6.2008,  21:25)
Никто не сможет стать хорошим архитектором пока не откажется от своей детской привязанности к одному языку и не начнет прагматично выбирать средства исходя из задач.

Выбор с опытом появляется, а возможность делать правильный выбор - с большим опытом. Не в том проблема. Проблема у программиста (большая такая проблемища) в том, что: к тому времени, как понастоящему освоишь инструмент, он успевает морально устареть. Приходится переучиваться. И так - много-много раз.
Я начинал с Бейсика(в 1979 году), потом - Фортран, потом - Паскаль, дальще - Си. А когда появился С++, читая бред Страуструпа, я  - решил подождать. Тогда появилась Java и DHTML. Это было во второй половине 90-х.
Меня удивляет, что С++ жив до сих пор. (Вашими усилиями, господа.) Этому хламу место на свалке. Давно причём.

Автор: MAKCim 2.6.2008, 09:19
Цитата(Мастер @  2.6.2008,  09:04 Найти цитируемый пост)
Я начинал с Бейсика(в 1979 году)

взрослый дядька (если это не блеф), а поришь всякую х#$&@

Автор: chipset 2.6.2008, 09:46
Цитата(Мастер @  1.6.2008,  23:04 Найти цитируемый пост)
Меня удивляет, что С++ жив до сих пор. (Вашими усилиями, господа.) Этому хламу место на свалке. Давно причём. 

Как же ты будешь писать, скажем, простой бенчмарк который нагружает диск/проц/видяху до определенного уровня? Делать через JNI такое просто глупо. Опять-же, системное программирование, интегрирование в ОС, ембеддед, драйверы, операционные системы, видеоигры. 

Автор: MAKCim 2.6.2008, 09:53
chipset, 
у него просто весь мир ограничен вебом

Автор: LSD 2.6.2008, 11:51
 smile 

Автор: Мастер 2.6.2008, 13:49
Цитата
Как же ты будешь писать, скажем, простой бенчмарк который нагружает диск/проц/видяху до определенного уровня? Делать через JNI такое просто глупо. Опять-же, системное программирование, интегрирование в ОС, ембеддед, драйверы, операционные системы, видеоигры. 
Уверен, DHTML+Java+Си способны заменить C++.
Цитата
у него просто весь мир ограничен вебом
Web пришел навсегда. Сегодня, если ты не можнешь программировать в Web, то - ты не программист. (Я это понял ещё в 95, поэтому слез с C++ ещё тогда.)

Автор: Shaggie 2.6.2008, 14:06
Цитата(Мастер @  2.6.2008,  14:49 Найти цитируемый пост)
DHTML+Java+Си способны заменить C++.

[Поперхнулся от неожиданности]

Цитата(Мастер @  2.6.2008,  14:49 Найти цитируемый пост)
Сегодня, если ты не можнешь программировать в Web, то - ты не программист.

Торвальдс оценит изящность шутки.


LSD, подвинься! smile 

Автор: LSD 2.6.2008, 14:25
Цитата(Мастер @  2.6.2008,  14:49 Найти цитируемый пост)
Уверен, DHTML+Java+Си способны заменить C++.

А хорошие псилоцибиновые грибы могут вообще заменить интернет и телевизор smile

Цитата(Shaggie @  2.6.2008,  15:06 Найти цитируемый пост)
LSD, подвинься!

Пришел позже и еще пихается!



 smile 

Автор: JackYF 2.6.2008, 14:29
Цитата(Мастер @  2.6.2008,  12:49 Найти цитируемый пост)
если ты не можнешь программировать в Web, то - ты не программист

Те люди, которые тебе браузеры написали (на С/С++) - тоже не программисты? smile

Автор: Mayk 2.6.2008, 15:02
 ставит галку в "Включить уведомление на e-mail при ответах?"

Цитата(Мастер @  2.6.2008,  17:49 Найти цитируемый пост)
Web пришел навсегда. Сегодня, если ты не можнешь программировать в Web, то - ты не программист. (Я это понял ещё в 95, поэтому слез с C++ ещё тогда.)

Аргументация будет? 

Автор: W4FhLF 2.6.2008, 15:22
Цитата(Мастер @  2.6.2008,  09:04 Найти цитируемый пост)
Я начинал с Бейсика(в 1979 году), потом - Фортран, потом - Паскаль, дальще - Си. А когда появился С++, читая бред Страуструпа, я  - решил подождать. Тогда появилась Java и DHTML. Это было во второй половине 90-х.


Стаж 30 лет? Круто. Может быть дашь ссылки на свои проекты или совместные? Я думаю и заграницей поработать успел(в 70х в России Basic'a небыло) в крупных институтах и корпорациях? Очень интересно было бы узнать каков твой опыт в сфере разработки ПО. Не часто всё-таки встречаешь программистов с 30ти летним стажем smile 

Автор: Lazin 2.6.2008, 15:32
зрелищно, Мастер не подвел 
 smile  

Автор: Мастер 2.6.2008, 16:13
Цитата
Аргументация будет?
 А нужна? Это было понятно в 1995-ом. Сейчас это должно быть очевидным.
Цитата
Те люди, которые тебе браузеры написали (на С/С++) - тоже не программисты?
Они умеют программировать в Web? потому и написали браузер.

Я не знаю чем плох IE с точки зрения интерфейса, и чем хороша Опера, но я оцениваю DOM браузеров, и мне нет дела до интерфейса. Я имею богатый опыт программирования в рамках MSDOM, и предпринимал неоднократные попытки прграммировать в DOM Оперы и Мазилы, и могу сказать: MSDOM написал гений, а DOM Оперы и Мазилы - и...т.
Я допускаю, что последний написал и интерфейс IE.
Microsoft имеет возможность купить профессионалов, гениев в своём программистском ремесле, но интерфейсы у них создают глупые, потому как - сытые, янки. Ядро же ОС, Офиса и IE пишут эмигранты, в т.ч. - из России.
Если бы Опера использовала ядро IE, а не пыталась пропихнуть свою убогую поделку, Опере, как браузеру, цены бы небыло.  И вот когда народ привыкнул бы к интерфейсу Оперы, вот тогда бы Биллу можно было бы сказать: Билл, у тебя больше нет браузера.
А пока что, рекламируя откровенно гнилой продукт, каковым является Опера, вы, господа, дискрилитируете идею альтернативного браузера. Когда народ поймёт, что Опера - туфта, вы, потом, когда появится настоящий браузер, альтернативный IE, палкой не загоните в него пользователя. На Билла работаете господа. (Ну... Как вам не стыдно!)

Врочем, это, кажется, не втему. (Прошу прощения.)

Цитата
Я думаю и заграницей поработать успел в крупных институтах и корпорациях?
Проблема с английским. (В школе был немецкий.)

Цитата
Очень интересно было бы узнать каков твой опыт в сфере разработки ПО.
Я прогаммирующий математик с образованием физика.

Цитата
в 70х в России Basic'a небыло
Как же небыло. Он раньше Фортрана появился. Билл на нём учился программировать.

Цитата
Может быть дашь ссылки на свои проекты или совместные?



Цитата
Не часто всё-таки встречаешь программистов с 30ти летним стажем
Я помню, как появилась первая шариковая ручка. (В школе только отличникам, по началу, разрешали ими писать, а мы макали в чернильницу.) Я помню, как появился первый калькулятор. Студентом, я познакомился с ЭВМ, звали её - НАИРИ. Потом была ЕС ЭВМ, и т.д. Объём оперативной памяти компьютера, за которым я работал в 1986 гду был 64К. Столько выделялось одному из десятка пользователей.

Я специализировался на автоматизации научных экспериментов. (Выделение сигнала на фоне сильного шума и т.п.)
17 лет изучал мозг. (Пытались построить компьютер с искуственным интеллектом.) Мы тогда и мечтать не могли о компьютерах, за которыми вы сейчас сидите.

Компьютеры стоили дорого. Работали на них по очереди, по ночам. Это сейчас писюк ничего не стоит. А раньше - 286-ая казалась волшебной палочкой. Мы на них чудеса творили.

Раньше, чтоб к компьютеру доступ получить, высшего образования было мало. Дураков и самонадеянных ослов на пушечный выстрел недопускали к компьютеру.
Времена изменились. Компьютер дёшев. Компьютеров стало много. Глупость за клавиатурой нынче, увы, нередкость.

Многие мои коллеги после дефолта 98 года вынуждены были сменить профессии. (Многие фирмы раззорились, а те, что остались на плаву, и мечтать не могли об I-коммерции. Работы небыло у нас, программистов.)

Вы, молодёжь, пришли на пустое место. Вам учится не укого. В этом ваша беда.
Я обращал ваше внимание на возможности браузера IE. Ещё в Win98 можно было создать 3D-сайт. Тогда же можно было решить и задачу реального времени в Web. А вы зациклились на PHP и SQL. Какое вам дело до господ из W3C. Они тащут вас назад, к ЕС ЭВМ, дырки в перфокартах лезвием ковырять. Вам это - надо?

Автор: MAKCim 2.6.2008, 16:23
LSD, 
Shaggie, 
для меня место еще есть?  smile 

Автор: Lazin 2.6.2008, 16:25
вопрос, как можно программировать в DOM, ведь DOM, это Data Object Model, тоесть он кагбы в первую очередь описывает данные... но сам(сама) DOM ничего не делает smile 
 smile

Добавлено через 1 минуту и 20 секунд
MAKCim, с этой стороны лучше видно  smile 

Автор: JackYF 2.6.2008, 16:27
Цитата(Мастер @  2.6.2008,  15:13 Найти цитируемый пост)
Они умеют программировать в Web? потому и написали браузер.

Браузер - это не веб-приложение  smile 

Ладно, на тебе ещё аргумент: тот, кто тебе ядро операционной системы написал - тоже не программисты? Так а чего ж ты пользуешься? smile

Автор: Мастер 2.6.2008, 17:00
Цитата
вопрос, как можно программировать в DOM, ведь DOM, это Data Object Model, тоесть он кагбы в первую очередь описывает данные... но сам(сама) DOM ничего не делает
В MSDOM можно. В опере - почти нельзя. (чуть-чуть - можно.)

Попробуй расковырять http://people.nnov.ru/master/DCSS/DCSS.1.1.beta.2004-03-30.rar. Посмотри пример http://people.nnov.ru/master/DCSS/test.

Автор: nickless 2.6.2008, 19:15
Мастер, 
а тебя не смущает, что даже майкрософт в последнее время решила поддерживать и международные стандарты в своём браузере, кроме своих собственных?
Недавно читал, что IE8 будет по дефолту использовать standard-compliant способ рендеринга. Сам знаешь, в IT всё очень быстро меняется и эволюционирует, глядишь и твои творения перестанут работать... 


ЗЫ
Офигенная тема, я тоже к вам присоединюсь smile  smile 

Автор: Мастер 2.6.2008, 19:57
Цитата
а тебя не смущает, что даже майкрософт в последнее время решила поддерживать и международные стандарты в своём браузере, кроме своих собственных?
Недавно читал, что IE8 будет по дефолту использовать standard-compliant способ рендеринга. Сам знаешь, в IT всё очень быстро меняется и эволюционирует, глядишь и твои творения перестанут работать... 
Не слежу я за этим. Я использую то, что в MSDOM есть, а что будет... Придёт время - увидим. Работать перестанут - подправим.
Я в большую политику не лезу. Мне - зачем?
Цитата
Офигенная тема, я тоже к вам присоединюсь
Должен ли я понимать, что с меня сняли кеймо форумного троля?

Автор: MAKCim 2.6.2008, 21:12
Цитата(Мастер @  2.6.2008,  19:57 Найти цитируемый пост)
Должен ли я понимать, что с меня сняли кеймо форумного троля?

 smile  smile 

Автор: Lazin 2.6.2008, 21:27
Цитата(Мастер @  2.6.2008,  19:57 Найти цитируемый пост)
Не слежу я за этим. Я использую то, что в MSDOM есть, а что будет... Придёт время - увидим. Работать перестанут - подправим.

мир жесток, я плакаль... некуда податься мне со своим FireFox-ом :'|

Автор: Fortop 3.6.2008, 03:47
Цитата(Мастер @  2.6.2008,  16:13 Найти цитируемый пост)
Он раньше Фортрана появился. Билл на нём учился программировать.

Раньше чего появился?
http://en.wikipedia.org/wiki/Fortran

http://en.wikipedia.org/wiki/BASIC

мда...

Автор: W4FhLF 3.6.2008, 07:21
Цитата(Мастер @  2.6.2008,  16:13 Найти цитируемый пост)
Проблема с английским. (В школе был немецкий.)


И как же ты смог освоить столько буржуйских технологий? На русском и сейчас книг хороших не так много, а в 80х и 90х, я думаю, и вовсе небыло. Как тебе удалось научиться программировать в 90е(начало-середина) не зная английского?smile

Цитата(Мастер @  2.6.2008,  16:13 Найти цитируемый пост)
Я прогаммирующий математик с образованием физика.


Программируешь мат. алгоритмы на Java+DHTML?  smile 

Цитата(Мастер @  2.6.2008,  16:13 Найти цитируемый пост)
Как же небыло. Он раньше Фортрана появился. Билл на нём учился программировать.


Ну вот я себе не могу представить: СССР + 70ые + IBM'овские меинстримы с траснялторами BASIC'a smile
Сейчас спрашивал знакомого, он в СССР преподавал информатику в универе, как раз в то время, говорит не помнит такого. Может прогресс обошёл его сторонойsmile Где именно ты программировал в 70е на BASIC'e? smile 

PS Да, и форт появился раньше васика, как уже упомянул Fortop

Автор: Mayk 3.6.2008, 07:27
Цитата(W4FhLF @  3.6.2008,  11:21 Найти цитируемый пост)
PS Да, и форт появился раньше васика, как уже упомянул Fortop

не стоит путать обзывать фортран фортом - http://en.wikipedia.org/wiki/Forth_%28programming_language%29 обижается

Автор: mr.DUDA 3.6.2008, 09:17
Цитата(W4FhLF @  3.6.2008,  07:21 Найти цитируемый пост)
Где именно ты программировал в 70е на BASIC'e?

http://ru.wikipedia.org/wiki/СМ_ЭВМ ?...  smile 



Автор: W4FhLF 3.6.2008, 09:28
mr.DUDA, я понятия не имею. Подождём Мастера и узнаем. 

Автор: Мастер 3.6.2008, 13:11
Цитата
Раньше чего появился? Fortran или BASIC

В 1979 нас учили на бейсике. Фортран был потом.
Кто из них первый вылупился? Я, до сих пор, был уверен - первым был бейсик.
Вовсяком случае, все свмые старые машины на нём работали.
И потом, тот, старый, бейсик с современным имеет только название общее, и питок команд, типа LET и REM. (Впрочем, про современный бейсик я почти ничего не знаю.)

Я считаю самым продвинутым языком прграммирования - JavaScript. На нём невероятно легко писать. Просто - наслаждение. Мне иногда приходится возвращаться к Си, и мне кажется - этот язык придумали для пыток.

JavaScript непросто лёгкий, но и, ьлагодаря процедуре eval(), невероятно мощьный. Благодаря этой процедуре вы можете писать программы, которые сами себя совершенствуют. Это кажется волшебством.

Кроме того, JavaScript (совместно с Java, DHTML и VML) позволяет реализовать задачи реального времени и 3D-сайты с потрясающе гибким интерфейсом.

Добавлено через 3 минуты и 46 секунд
Цитата
И как же ты смог(без английского) освоить столько буржуйских технологий? На русском и сейчас книг хороших не так много, а в 80х и 90х, я думаю, и вовсе небыло. Как тебе удалось научиться программировать в 90е(начало-середина) не зная английского?
Было очень трудно. Правда. Но тогда мы учились друг у друга. Раньше не было конкуренции, поэтому за знания можно было заплатить словом "спасибо". Этого было достаточно. Сейчас знания - источник доходов, словесной благодарностью нынче не отделаешься.

Автор: Любитель 3.6.2008, 13:18
Цитата(Мастер @  3.6.2008,  13:11 Найти цитируемый пост)
Я считаю самым продвинутым языком прграммирования - JavaScript

smile

Цитата(Мастер @  3.6.2008,  13:11 Найти цитируемый пост)
Мне иногда приходится возвращаться к Си, и мне кажется - этот язык придумали для пыток.

А ты думал? smile 

Цитата(Мастер @  3.6.2008,  13:11 Найти цитируемый пост)
Благодаря этой процедуре вы можете писать программы, которые сами себя совершенствуют.

 smile 

Цитата(Мастер @  3.6.2008,  13:11 Найти цитируемый пост)
Но тогда мы учились друг у друга. 

А первоисточник? ;)

Автор: Мастер 3.6.2008, 13:20
Цитата
Программируешь мат. алгоритмы на Java+DHTML?
Все интерфейсы пользователей коро станут Web. (Может быть за очень редким исключением.)
У меня была идея - создать рабочее место математика. Этот когда математик, со своего домашнего компьютера, по телефону, мог озадачить кластер нашего НИИ, и, получив результат, мог посмотреть его дома.
К сожалению - не срослось. Меня сократили. (Нужно было принять на работу юношу, который, в противном случае, шел в армию.)

Автор: Mayk 3.6.2008, 13:23
Цитата(Мастер @  3.6.2008,  17:11 Найти цитируемый пост)

JavaScript непросто лёгкий, но и, ьлагодаря процедуре eval(), невероятно мощьный. Благодаря этой процедуре вы можете писать программы, которые сами себя совершенствуют. Это кажется волшебством.

Для тех кто видел lisp/python/ruby? Не надо смешить.

Добавлено @ 13:24
Цитата(Мастер @  3.6.2008,  17:20 Найти цитируемый пост)
Этот когда математик, со своего домашнего компьютера, по телефону, мог озадачить кластер нашего НИИ, и, получив результат, мог посмотреть его дома.

rsh/ssh отменили? vnc? rdp?

Автор: Мастер 3.6.2008, 13:26
Цитата
А первоисточник? ;)
Набери в командной строке help, и посмотри.
Это был основной источник.
С конференций привозили. Спецслужбы тоже работали. (Воровали информацию.) Изучению современной импортной техники в НИИ занимались отдельные службы программистов. Ониже и нас учили. Писали пособия (на русском).

Автор: W4FhLF 3.6.2008, 13:29
Цитата(Мастер @  3.6.2008,  13:11 Найти цитируемый пост)
JavaScript непросто лёгкий, но и, ьлагодаря процедуре eval(), невероятно мощьный. Благодаря этой процедуре вы можете писать программы, которые сами себя совершенствуют. Это кажется волшебством.


omfg... AI is coming smile 

Цитата(Мастер @  3.6.2008,  13:20 Найти цитируемый пост)
Все интерфейсы пользователей коро станут Web.


Как вообще связана практика программирующего матматика с образованием физика с веб-интерфейсами и HTML? smile

Добавлено через 2 минуты и 23 секунды
По моим подсчётам, сенсею порядка 50ти лет. 

Автор: Lazin 3.6.2008, 13:32
 smile 
/me с нетерпением ждет продолжения

Автор: Любитель 3.6.2008, 13:32
Блин, ну покажите мне программу, которая будет совершенствовать саму себя! Сразу фсё брошу и перехожу на яваскрипт. Обещаю! smile 

Автор: Мастер 3.6.2008, 13:36
Цитата
Для тех кто видел lisp/python/ruby? Не надо смешить.
Про Lisp я только слышал. Книги смотрел. Но это было давно. У нас техники тогда небыло для того, чтоб лисп можно было юзать. Но недумаю, что он шибко крут. Скорее - очень сложен и неудобен. (Иначе им пользовались бы.)

Lisp - язык, насколько я помню, создан для того, чтоб писать программы, претендующие на наличие в них интеллекта. Но те, кто его создавал, незнали ответа на естественный вопрос: а что есть интеллект?

Я допускаю, что лисп хорош, но он в браузере не работает, и маловероятно, что бкдет там работать. Он выпал из эволюционного процесса.

На одной из конференций я, ещё молодой и наивный, спросил нашего, весьма важного, корифея, который пытался создать машину, обладающую искуственным интеллектом, c 1961 года: чем будет отличаться компьютер, обладающий искуственным интеллектом, от компьютера, который мы имеем сегодня?
- Он будет думать! - ответил корифей, и, прежде чем я успел возразить, удалился, собою довольный.
Цитата
Блин, ну покажите мне программу, которая будет совершенствовать саму себя! Сразу фсё брошу и перехожу на яваскрипт. Обещаю!
Я говорил, что такая возможность есть. Я неговорил, что написал програму, которая сама себя совершенствует.

С помощью процедуры eval() можно выполнить сгенерённую Скриптом строку, так, словно это програма. Браузер сам её компильнёт и скушает, если в ней(в строке кода) нет ошибок. А уж какой код в этой строке: совершенствует он вашу программу или нет, решать вам.( Критерии совершенства нужно описать для начала. К какому идеалу програма должна стремиться, совершенствуя себя?)

Автор: Mayk 3.6.2008, 13:39
Цитата(Любитель @  3.6.2008,  17:32 Найти цитируемый пост)
Блин, ну покажите мне программу, которая будет совершенствовать саму себя! Сразу фсё брошу и перехожу на яваскрипт. Обещаю! smile  

Читал(линк дам позже) что в генетических алгоритмах иногда применяются генитеческие же алгоритмы для определения оптимальных параметров(начальная популяция, вероятность кроссовера/мутации и т д)
(или нейронные сети применяются для определения оптимальных параметров НС - не помню точно).  Как пример самосовершентвования пойдёт?  smile   smile

Добавлено @ 13:42

Цитата(Мастер @  3.6.2008,  17:36 Найти цитируемый пост)
Про Lisp я только слышал. Книги смотрел. Но это было давно. У нас техники тогда небыло для того, чтоб лисп можно было юзать. Но недумаю, что он шибко крут. Скорее - очень сложен и неудобен. (Иначе им пользовались бы.)

Lisp - язык, насколько я помню, создан для того, чтоб писать программы, претендующие на наличие в них интеллекта. Но те, кто его создавал, незнали ответа на естественный вопрос: а что есть интеллект?

Незачот за знание матчасти. Корни лиспа напрямую уходят в http://en.wikipedia.org/wiki/Eval#Lisp.  AI был позже. 
И вот кто-кто, а создатили javascript'а уж точно не знают что есть интеллект  smile 


Автор: Lazin 3.6.2008, 13:43
блин, а я то думал он (ECMAScript) в первую очередь нужен для рисования пользовательского интерфейса на страничках smile 

Автор: Мастер 3.6.2008, 13:52
Цитата
блин, а я то думал он (ECMAScript) в первую очередь нужен для рисования пользовательского интерфейса на страничках
Интерфейс у компьютера нынче, может быть, главное. Если интерфейс с интеллектомЮ то и компьютер - с мозгами.

Автор: Любитель 3.6.2008, 14:02
Цитата(Мастер @  3.6.2008,  13:36 Найти цитируемый пост)
С помощью процедуры eval() можно выполнить сгенерённую Скриптом строку, так, словно это програма. Браузер сам её компильнёт и скушает, если в ней(в строке кода) нет ошибок. А уж какой код в этой строке: совершенствует он вашу программу или нет, решать вам.( Критерии совершенства нужно описать для начала.)

Да всё понятно - в чём гениальность сего? И самое главное - почему это "уникальность" яваскрипта?!

Цитата(Mayk @  3.6.2008,  13:39 Найти цитируемый пост)
Читал(линк дам позже) что в генетических алгоритмах иногда применяются генитеческие же алгоритмы для определения оптимальных параметров(начальная популяция, вероятность кроссовера/мутации и т д)
(или нейронные сети применяются для определения оптимальных параметров НС - не помню точно).  Как пример самосовершентвования пойдёт?

Верю. И не только для параметров генетического алгоритма - для оч многих параметров можно их находить (только к eval и пр. это не имеет отношения, но да ладно). Речь, конечна, шла о более высокоуровневом совершенствовании ;)

Автор: Мастер 3.6.2008, 17:50
Цитата
Да всё понятно - в чём гениальность сего? И самое главное - почему это "уникальность" яваскрипта?!
это не уникальность яваскрипта в общем смысле. В перле eval тоже, кажется, есть. Но перл не работает в браузере. Java - работает, но - в Java нет eval.

Нет этой процедуры в Си и С++. Но С++ итак доживает последнее. Её вытеснят языки, ориентированные на Web. Такие, как С# и Java. Всё, что с web не связано мало кого интересует уже сейчас. А в ближайшем будущем С++ уйдет со сцены.

Что касается процедуры aval с точки зрения исскуственного интеллекта, то она позволяет сохранять в памяти правила. Т.е. - компьютер, кроме деклоративной памяти(БД), преобретает память функциональную(Навык). Теперь компьютер может не только ответить на вопрос:  как зовут?, но и - что делать?. Научится, т.е. - записать последовательность действий в память, чтоб потом воспользоваться навыком. Т.о. - благодаря процедуре  aval компьютер обзавёлся возможностью обучаться, навыки преобретать, рефлексы условные вырабатывать - т.е.. Компьютер становится живым, поскольку условные рефлексы характер формируют, и не только - человека.

Благодаря процедуре eval компьютер станет устройством суперадаптивным, очень дружественным. Он мог бы им стать уже сейчас. Нужно просто правильно запрограммировать.

Цитата
...генетических алгоритмах...

Молодёжь то нынче - продвинутая!
Кстати, а что вы (нынче) называете генетическими алгоритмами?

Автор: Любитель 3.6.2008, 18:02
Цитата(Мастер @  3.6.2008,  17:50 Найти цитируемый пост)
Но С++ итак доживает последнее. Её 

C++ сменил пол? smile 

Цитата(Мастер @  3.6.2008,  17:50 Найти цитируемый пост)
Кстати, а что вы (нынче) называете генетическими алгоритмами?

http://ru.wikipedia.org/wiki/Генетический_алгоритм smile Сразу скажу - с eval никак не связано smile 

Автор: MAKCim 3.6.2008, 18:12
 smile 
продолжайте в том же духе

Автор: Мастер 3.6.2008, 18:18
Цитата
путем последовательного подбора

Цитата
с использованием механизмов, напоминающих биологическую эволюцию
Слишком примитивное представление об эволюции.

Вы начнёте понимать что есть генетические (эволюционные) алгоритмы тогда, когда ответите на вопрос: а зачем природе понадобилось усложныть процесс размножения? Зачем понадобился мийоз? Чем плох митоз? Мийоз и митоз - два разных генетических алгоритма. Вчём разница? Почему у нас два родителя. Почему женщина без мужчины родить не может? Делились бы(как одноклеточные) надвое - просто и удобно - ненужно партнёра искать, добиваться его благосклонности. Зачем природе понадобилось этот (двуполый) огород городить?

И ещё. Я ждал, что вы зададите вопрос: чем будет отличаться компьютер, обладающий искуственным интеллектом от компьютера, который мы имеем сегодня?
Раз вы его не задали, то я его задам вам?
Так - чем же?
Цитата
Может быть дашь ссылки на свои проекты или совместные?

Есть у меня http://people.nnov.ru/master/More/Book/IRu.htm, но она для математиков, специализирующихся в исследовении нелинейных динамических систем и нейронных сред.
Суть такая: принято считать, что исследовать нелинейные модели труднее, чем линейные. Тем более - если система имеет нелинейности с гистерезисом, и нелокальные(длинные) пространственные и временные связи . В киге показано, что это нетак. Приведены методы и примеры к ним, позволяющие исследовать модели с произвольной нелинейностью, в том числе - с гистерезисом. Приведён метод, позволяющий исследовать модели нейронных сред.
Вот http://people.nnov.ru/master/More/Finger/FingerRu.htm. Эта посвящена обработке и кодированию отпечатка пальцев.(Работа выполнена на Си, под DOS-ом в 286-й машине.)
А вот в Матлабе, сегодня:user posted imageuser posted image
Цитата
Где именно ты программировал в 70е на BASIC'e?
Как называлась та машина, я не помню. (30 лет прошло.) Ну конечно же - не ЕС ЭВМ. Это убожество появилось позже. В 80-х.

Автор: Любитель 3.6.2008, 18:26
Цитата(Мастер @  3.6.2008,  18:18 Найти цитируемый пост)
Вы начнёте понимать что есть генетические (эволюционные) алгоритмы тогда, когда ответите на вопрос: а зачем природе понадобилось усложныть процесс размножения? Зачем понадобился миёоз? Чем плох митоз?

smile

Добавлено через 27 секунд
Мастер, респект. Хорошая тема полчилась smile 

Автор: Lazin 3.6.2008, 18:43
Цитата(Любитель @  3.6.2008,  18:02 Найти цитируемый пост)
C++ сменил пол? smile 

у С++ есть пол? smile

Добавлено через 29 секунд
Цитата(Мастер @  3.6.2008,  18:18 Найти цитируемый пост)
И ещё. Я ждал, что вы зададите вопрос: чем будет отличаться компьютер, обладающий искуственным интеллектом от компьютера, который мы имеем сегодня?

кого-то мне это напоминает smile

Добавлено через 1 минуту и 25 секунд
Цитата(Мастер @  3.6.2008,  17:50 Найти цитируемый пост)
Что касается процедуры aval с точки зрения исскуственного интеллекта, то она позволяет сохранять в памяти правила. Т.е. - компьютер, кроме деклоративной памяти(БД), преобретает память функциональную(Навык). Теперь компьютер может не только ответить на вопрос:  как зовут?, но и - что делать?. Научится, т.е. - записать последовательность действий в память, чтоб потом воспользоваться навыком. Т.о. - благодаря процедуре  aval компьютер обзавёлся возможностью обучаться, навыки преобретать, рефлексы условные вырабатывать - т.е.. Компьютер становится живым, поскольку условные рефлексы характер формируют, и не только - человека.


а можно вопрос, зачем для этого функция eval? smile

Добавлено через 3 минуты и 16 секунд
 smile

Автор: Мастер 3.6.2008, 19:08
Цитата
а можно вопрос, зачем для этого функция eval?
Правило, которое запомнил, условный рефлекс, что выработал, как превратишь в действие иначе?

смайли ки в этом форуме: класс!!! smile  smile smile

(народ на памперсах раззорится)

Автор: MAKCim 3.6.2008, 19:11
Мастер, 
как ты думаешь, Java сможет заменить ассемблер?
и вот еще что
перечисли программы, которые у тебя установлены на компьютере, написанные на Java и требующие для запуска JVM

Автор: Мастер 3.6.2008, 19:26
Цитата
как ты думаешь, Java сможет заменить ассемблер?

Сгенерить код для железяки можно на любом (пригодном для этого) компьютере. Генератор можно написать на Си или на Java.
Я когдато программировал контроллеры York International с ноутбука, из под ДОС, по RS232.
Генератор кода был написан на Си.

Добавлено @ 19:29
Цитата
перечисли программы, которые у тебя установлены на компьютере, написанные на Java и требующие для запуска JVM
Согласен. С++ завтра будет ещё жив. Но, преучиваться советую начать уже сейчас.

Автор: MAKCim 3.6.2008, 19:32
Цитата(Мастер @  3.6.2008,  19:26 Найти цитируемый пост)
Сгенерить код для железяки можно на любом (пригодном для этого) компьютере. Генератор можно написать на Си или на Java.

ОК
представим ситуацию: тебе нужно написать обработчик прерывания, скажем, под IA-32e
у тебя есть кодогенератор на Java/C
твои действия? (по пунктам)

Автор: Мастер 3.6.2008, 19:52
Цитата
представим ситуацию: тебе нужно написать обработчик прерывания, скажем, под IA-32e

IA-32e - это процессор?

Хорошо-хорошо. Асемблер будет жить... Сдаюсь!

Конечно будет, но - этот язык не для массового потребления. Инструмент специализированный.
Я, к примеру, никогда не программировал BIOS. Ассемблер использовал только как вставки в Си от Борланд.

Специальные инструменты всегда будут. И С++, очевидно, сохранится, но - не как язык общего пользования.

Насколько я помню, обработчик прерываений, это код, на который указыает ссылка из списка указателей на прерывания. Список этот находится в памяти по конкретному адресу. Место в списке - есть номер прерывания. Так? (В досе это было, кажется, так.)

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

Мне кажется, этим должна заниматься биос. Она должна инициализировать вектор прерываний.

Вот http://www.ilog.com/products/cplex/product/platforms.cfm что-то говорится о JDK для процессоров IA. Т.е. - Java написана для вашего процессора. Вам её не хватает?

Автор: MAKCim 3.6.2008, 20:03
Цитата(Мастер @  3.6.2008,  19:52 Найти цитируемый пост)
С++, очевидно, сохранится, но - не как язык общего пользования.

тогда еще один вопрос: что легче реализовать, компилятор С++ или JVM?
ты уверен, что можно реализовать JVM под все платформы?

Цитата(Мастер @  3.6.2008,  19:52 Найти цитируемый пост)
A-32e - это процессор?

нет


Автор: Мастер 3.6.2008, 20:29
Цитата
ты уверен, что можно реализовать JVM под все платформы?
Много лет назад было сообщение, что Java работала в наручных часах. Java работает в пластиковых картах и сотовых телефонах. Т.е. - с точки зрения потребления ресурсов - Java хороша.
Что касается платформ. Я застал ещё аналоговые компьютера. В них перемножадись не числа, а волты и амперы. (Кстати, аналоговые компьютеры управляют Ту-160.) Наверняка, там Java работать не будет. Java не будет работать в нейронной среде, если та аналоговая.
Java работает в многопроцессорных (RISC) компьютерах. (См. http://www.osp.ru/nets/1997/01/142118/#part_3).

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

Автор: Shaggie 4.6.2008, 06:57
Цитата(Мастер @  3.6.2008,  18:50 Найти цитируемый пост)
в Java нет eval.

Уже неверно. Начиная с шестой JDK имеется механизм поддержки скриптовых движков, и, по идее, выполнить можно любую строку, удовлетворяющую некоему формату. Пример:

Код

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.put("frameTitle", new Date());
String script = "importPackage(java.awt);\n" +
                "importClass(java.awt.Frame);\n" +
                "var frame = new java.awt.Frame(frameTitle.toString());\n" +
                "frame.setVisible(true);\n" +
                "println(frame.title);";
engine.eval(script);


Одного не пойму - и как с помощью eval() можно захватить мир? Да, временами очень удобно... но не более того. Тем более в Java, которая очень строго относится к попыткам выстрелить себе в ногу.

Автор: Lazin 4.6.2008, 08:13
для плюсов полюбому больше скриптовых движков smile

Добавлено через 51 секунду
Ма-стер, Ма-стер, Ма-стер, Ма-стер, Ма-стер, Ма-стер, Ма-стер!! давай еще!
 smile

Добавлено через 3 минуты и 59 секунд
Цитата(Мастер @  3.6.2008,  20:29 Найти цитируемый пост)
Что касается платформ. Я застал ещё аналоговые компьютера. В них перемножадись не числа, а волты и амперы.

в них решаются диф-уравнения, джавы там точно нет smile

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

Автор: Мастер 4.6.2008, 08:50
Цитата
Начиная с шестой JDK имеется механизм поддержки скриптовых движков
Не знал. В первой Jave этого не было.
Кто же компиляет скрипт?
Впрочем, это не совсем то. В Jave нельзя сгенерить код на Java, и исполнить его.
Цитата
Одного не пойму - и как с помощью eval() можно захватить мир?
Для начала вам нужно разобраться с интеллектом. Интеллект - это что?
Когда поймёте - станет ясно - как это можно реализовать на компьютере.
Кстати, интеллектом обладают все, кто имеет нервную систему. Обучаться (вроде бы) могут не все.

Конгда вы пишите программу на Си, вы обеспечиваете компьютер набором безусловных рефлексов. Ваша программа не умеет учиться. Чтобы учиться, нужно уметь записывать(запоминать) правила. На Си это (практически) невозможно. На JavaScript, благодаря eval, это можно.

Теперь, чтоб запомнить правило, его, правило это, нужно ещё сгенерить. А вот это - от задачи зависит, и - от вашего понимания её.
Цитата
программы ... нужно писать на компилируемых(в нативный код) языках!
А что мешает скомпилировать байт код? Я, почемуто, думаю, что это проще, чем скомпилировать Сишный текст.

Кроме того, писать на Java алгоритмы обработки данных  неправильно. К Java нужно подключить библиотеку, которая это делает. Задача Java - синхронизировать работу многих нативных процессов. Большего от неё требовать не следует. Даже интерфейс на Java писать не правильно, потому, что неудобно. Cложно и гибкий он не получается.
Интерфейс нужно писать на DHTML.

Автор: nerezus 4.6.2008, 09:17
Цитата

Уже неверно. Начиная с шестой JDK имеется механизм поддержки скриптовых движков, и, по идее, выполнить можно любую строку, удовлетворяющую некоему формату.
 А теперь пожалуйста то же самое, но в синтаксисе Java ;)

Автор: Mayk 4.6.2008, 09:21
Цитата(Мастер @  4.6.2008,  12:50 Найти цитируемый пост)
Для начала вам нужно разобраться с интеллектом. Интеллект - это что?

Тар, это ты?

Цитата(Мастер @  4.6.2008,  12:50 Найти цитируемый пост)
Впрочем, это не совсем то. В Jave нельзя сгенерить код на Java, и исполнить его.

В самом деле?

Цитата(Мастер @  4.6.2008,  12:50 Найти цитируемый пост)

Конгда вы пишите программу на Си, вы обеспечиваете компьютер набором безусловных рефлексов. 

Набор слов. 

Цитата(Мастер @  4.6.2008,  12:50 Найти цитируемый пост)
Ваша программа не умеет учиться.

Что такое "учиться"(с)?

Автор: Alexandr87 4.6.2008, 09:24
Мастер, разницу между скриптами и компилируемыми в машинный код языками понимаем?

Автор: Shaggie 4.6.2008, 09:33
Цитата(Мастер @  4.6.2008,  09:50 Найти цитируемый пост)
В Jave нельзя сгенерить код на Java, и исполнить его.

Технически можно, только это мало похоже на пресловутый eval(). Достаточно сгенерировать правильный код для класса и подать внешнему компилятору команду на компиляцию. Более того, с этой проблемой народ встречается не так редко; Apache создали удобный пакет http://commons.apache.org/jci/ для её решения.

Автор: Мастер 4.6.2008, 09:35
Цитата
Мастер, разницу между скриптами и компилируемыми в машинный код языками понимаем?
А что - есть сомнения?
JIT - это компилятор?
Зачем "компилировать налету", если можно докомпилять байткод до натив. Что мешает?
Цитата
Цитата
В Jave нельзя сгенерить код на Java, и исполнить его.
Технически можно, только это мало похоже на пресловутый eval()
Java, хотя и проще чем С++, сложный язык. Поэтому реализация в Java возможностей, которые уже есть в JavaScript, кажутся не очень интересными. Я в Java только по нужде хожу. (Сокеты там хороши. Ах!)

Автор: Alexandr87 4.6.2008, 09:46
Мастер, вообщет этот вопрос был касательно eval а. и "невозможности" сделать это на си.
На си можно написать (и они уже написаны) движки, которые будут интерпретировать любой скриптовый язык.

Цитата(Мастер @  4.6.2008,  12:35 Найти цитируемый пост)
Зачем "компилировать налету", если можно докомпилять байткод до натив. Что мешает? 

Ничто не мешает gcj, а компилировать на лету затем, чтобы можно было запустить один и тот же "набор байтов" под любой платформой (скриптовая фишка) и увеличить скорость выполнения посравнению с "прямой" интерпретацией байт-кода.

Автор: Lazin 4.6.2008, 21:47
както тихо тут стало...
 smile

Автор: JackYF 4.6.2008, 23:46
Давайте про D пофлеймим. smile

Автор: chipset 5.6.2008, 02:14
Цитата(JackYF @  4.6.2008,  13:46 Найти цитируемый пост)
Давайте про D пофлеймим. smile 

D рулит. Миксины форева. 

Автор: Shaggie 5.6.2008, 05:44
Dtrace наше фсио, а без D в него не суйся!

Автор: LSD 5.6.2008, 11:23
Согласен D рулез, одни итераторы чего там стоят smile

Кстати а есть нормальные IDE для D?

Автор: Mayk 5.6.2008, 11:25
Цитата(LSD @  5.6.2008,  15:23 Найти цитируемый пост)
Кстати а есть нормальные IDE для D? 

vim.

Добавлено через 28 секунд
 smile  smile  smile 

Автор: nerezus 5.6.2008, 11:43
А зачем тогда D рекламится левыми способами?
Там была таблица сравнения с C/C++/Java/C#, так там куча пунктов неверно была проставлена: типа в D оно есть, а в других нету, хотя на самом деле в других это тоже есть.

Автор: LSD 5.6.2008, 12:35
Mayk, я спрашивал про нормальную IDE, а не как бы мне поизвращенней убить свое время smile 

Автор: Lazin 5.6.2008, 12:43
Code::Blocks, Poseidon, Eclipse... как грязи smile 

Автор: Мастер 5.6.2008, 14:10
Цитата
На си можно написать (и они уже написаны) движки, которые будут интерпретировать любой скриптовый язык.
Я про это ничего не слышал, да... и не интересно. Зачем всё это? Можно пытаться распаралелить фортран, и на телегу можно поставить колёса от автомобиля. Наверно, в этом есть какойто смысл. Но я его не вижу.
Цитата
Ничто не мешает gcj, а компилировать на лету затем, чтобы можно было запустить один и тот же "набор байтов" под любой платформой (скриптовая фишка) и увеличить скорость выполнения посравнению с "прямой" интерпретацией байт-кода.
 smile (Не понял я.)
Докомпилировать байт код имеет смысл при инсталляции ПО на Java  написанного именно для того, чтоб увеличить скорость выполнения кода. К переносимости на другие платформы это не имеет никагого отношения. Вы же не переносите установленный Офис на новый компьютер. Вы туда ставите дистрибутив.
Так вот, дистрибутив пусть содержит только байткод. Натив код из него можно сгенерить при инсталляции ПО на конкретную железку.
С апплетом этого сделать нельзя, а мы и небудем.

Автор: LSD 5.6.2008, 14:15
Цитата(Мастер @  5.6.2008,  15:10 Найти цитируемый пост)
Можно пытаться распаралелить фортран, и на телегу можно поставить колёса от автомобиля. Наверно, в этом есть какойто смысл.

Шумит меньше и ездит "мягче" smile 
А фортран паралелить не нужно, его перпендикулярить нужно smile 

Автор: Alexandr87 5.6.2008, 16:01
Цитата(Мастер @  5.6.2008,  17:10 Найти цитируемый пост)
Я про это ничего не слышал, да... и не интересно. Зачем всё это? 

 smile  про это не надо слышать. Это надо понимать - это принцип. 


Цитата(Мастер @  5.6.2008,  17:10 Найти цитируемый пост)
Докомпилировать байт код имеет смысл при инсталляции ПО на Java  написанного именно для того, чтоб увеличить скорость выполнения кода. 

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

Автор: W4FhLF 5.6.2008, 16:39
Цитата(Мастер @  5.6.2008,  14:10 Найти цитируемый пост)
Можно пытаться распаралелить фортран


А в чём проблема? Уже много лет существует OpenMP технология для фортрана.

Автор: Мастер 6.6.2008, 06:18
Цитата
А в чём проблема? Уже много лет существует OpenMP технология для фортрана.
Процедурные языки строго соблюдают очерёдность исполнения команд, поэтому процедурные языки распараллеливаются с трудом и,  как правило, криво. 

Объектноориентированные  распараллеливаются легко, поскольку каждый объект может существовать в пространстве и во времени одновременно с другими объектами. А Java механизм синхронизации процессов изначально, с первой версии содержит.

Распаралеливать Фортран глупо. Можно было просто создать библиотеку(DLL) и подключить её к Java.
Цитата
у интерпретируемого кода кроме платформонезависимости есть еще ряд приемуществ, вроде слежения за действия кодами и возможность авторизовывать данные действия или блокировать их.
Но есть и серьёзный недостаток - интерпретаторы медленные. Поэтому докомпиляция кода может ускорить его.

Автор: Mayk 6.6.2008, 07:37
Какая феерия smile

Цитата


Цитата
А в чём проблема? Уже много лет существует OpenMP технология для фортрана.
Процедурные языки строго соблюдают очерёдность исполнения команд, поэтому процедурные языки распараллеливаются с трудом и,  как правило, криво. 

Объектноориентированные  распараллеливаются легко, поскольку каждый объект может существовать в пространстве и во времени одновременно с другими объектами. А Java механизм синхронизации процессов изначально, с первой версии содержит.

Распаралеливать Фортран глупо. Можно было просто создать библиотеку(DLL) и подключить её к Java.
Цитата
у интерпретируемого кода кроме платформонезависимости есть еще ряд приемуществ, вроде слежения за действия кодами и возможность авторизовывать данные действия или блокировать их.
Но есть и серьёзный недостаток - интерпретаторы медленные. Поэтому докомпиляция кода может ускорить его.

Автор: Lazin 6.6.2008, 08:43
Цитата(Мастер @  6.6.2008,  06:18 Найти цитируемый пост)
Но есть и серьёзный недостаток - интерпретаторы медленные. Поэтому докомпиляция кода может ускорить его.

интерпретатор lua - не медленный, во всяком случае в таких задачах как работа со строками или поиск в таблице, он не медленнее Java, а даже наоборот...

Цитата(Мастер @  6.6.2008,  06:18 Найти цитируемый пост)
Распаралеливать Фортран глупо. Можно было просто создать библиотеку(DLL) и подключить её к Java.

чет я не понял, джава все автоматически распаралеливать научилась? 
Можно тут поподробнее, как джава заставит код из DLL работать параллельно?

 smile

Автор: nerezus 6.6.2008, 12:02
Цитата

интерпретатор lua - не медленный
 Он VM без JIT, а не интерпретатор.

Автор: Lazin 6.6.2008, 13:01
lua BNF grammar выглядит так:
Код

    chunk ::= {stat [`;´]} [laststat [`;´]]

    block ::= chunk

    stat ::=  varlist `=´ explist | 
         functioncall | 
         do block end | 
         while exp do block end | 
         repeat block until exp | 
         if exp then block {elseif exp then block} [else block] end | 
         for Name `=´ exp `,´ exp [`,´ exp] do block end | 
         for namelist in explist do block end | 
         function funcname funcbody | 
         local function Name funcbody | 
         local namelist [`=´ explist] 

    laststat ::= return [explist] | break

    funcname ::= Name {`.´ Name} [`:´ Name]

    varlist ::= var {`,´ var}

    var ::=  Name | prefixexp `[´ exp `]´ | prefixexp `.´ Name 

    namelist ::= Name {`,´ Name}

    explist ::= {exp `,´} exp

    exp ::=  nil | false | true | Number | String | `...´ | function | 
         prefixexp | tableconstructor | exp binop exp | unop exp 

    prefixexp ::= var | functioncall | `(´ exp `)´

    functioncall ::=  prefixexp args | prefixexp `:´ Name args 

    args ::=  `(´ [explist] `)´ | tableconstructor | String 

    function ::= function funcbody

    funcbody ::= `(´ [parlist] `)´ block end

    parlist ::= namelist [`,´ `...´] | `...´

    tableconstructor ::= `{´ [fieldlist] `}´

    fieldlist ::= field {fieldsep field} [fieldsep]

    field ::= `[´ exp `]´ `=´ exp | Name `=´ exp | exp

    fieldsep ::= `,´ | `;´

    binop ::= `+´ | `-´ | `*´ | `/´ | `^´ | `%´ | `..´ | 
         `<´ | `<=´ | `>´ | `>=´ | `==´ | `~=´ | 
         and | or

    unop ::= `-´ | not | `#´

распарсить его очень просто, так что интерпретатор там и подавно быстрый...

Автор: JackYF 6.6.2008, 13:32
Цитата(Lazin @  6.6.2008,  12:01 Найти цитируемый пост)
BNF grammar

EBNF  smile 

Автор: Lazin 6.6.2008, 14:27
Цитата(JackYF @  6.6.2008,  13:32 Найти цитируемый пост)
EBNF  

согласен, только в доке написано что это BNF

Добавлено через 26 секунд
но все-же это EBNF smile 

Автор: chipset 6.6.2008, 19:27
Цитата(Мастер @  5.6.2008,  20:18 Найти цитируемый пост)
Процедурные языки строго соблюдают очерёдность исполнения команд, поэтому процедурные языки распараллеливаются с трудом и,  как правило, криво. 



Тебя не смущает что юникс поддерживает лучшую многозадачность чем виндовс? Кстати Юникс написан на процедурном языке, и много приложений под него тоже. Про то что процедурные языки строго соблюдают очередность команд это вообще шедевр. Откуда это?? Ты слышал про WaitForMultipleObjects какой-нибудь или асинхронные потоки в чистом Си? Методы программирования многопоточных прилаг в Си и С++ ничем не отличаются. Поэтому добавив обьекты в фортран ты мало что выиграешь.
Цитата(Мастер @  5.6.2008,  20:18 Найти цитируемый пост)

Объектноориентированные  распараллеливаются легко, поскольку каждый объект может существовать в пространстве и во времени одновременно с другими объектами. 


 smile 

Это никак не влияет ни на что. Точно так же могут существовать в одном пространстве и времени данные в какой нибудь shared memory. Как дополнительные функции к обьекту помогут существовать обьекту во в многопоточном пространстве? Эти функции легко вынести за пределы обьекта. 


user posted image

Автор: MAKCim 6.6.2008, 19:53
chipset, 

smile

Автор: chipset 6.6.2008, 20:10
smile 

аааа...

user posted image

Добавлено через 3 минуты и 41 секунду
user posted image

Автор: W4FhLF 7.6.2008, 10:16
Цитата(Мастер @  6.6.2008,  06:18 Найти цитируемый пост)
Процедурные языки строго соблюдают очерёдность исполнения команд, поэтому процедурные языки распараллеливаются с трудом и,  как правило, криво. 


Не знаю, что у тебя там с очередностью и кривостью, но у меня сейчас два проекта: один на С++ с пом. OpenMP распараллелен, если бы был на С, то точно так же был бы распараллелен без всякой кривоты; второй, на С, через CUDA API распараллеливается на 128 ядер(те, что в GPU) и порядка 4000 потоков. Ищи кривость в другом месте smile 

Цитата(Мастер @  6.6.2008,  06:18 Найти цитируемый пост)
Распаралеливать Фортран глупо. Можно было просто создать библиотеку(DLL) и подключить её к Java.


Можно было просто пойти попить пива.  smile 

Автор: LSD 7.6.2008, 10:48
Эпическая сага о том, как доблестные флеймеры победели злого тролля:
Часть 1. Братство IE.
Часть 2. Два языка.
Часть 3. Возвращение фортрана.

 smile 

Автор: 3,14 7.6.2008, 11:32
Тоже захотелось пофлеймить немножко  smile 
Цитата(Lazin @  4.6.2008,  08:13 Найти цитируемый пост)
а сейчас я буду объяснять почему Java - отстой smile 
Java - с точки зрения эффективности, далека до идеала (в лице Си), поэтому, когда программа написанная на Java-e выполняется, огромное количество тактов процессора тратится на обработку байт кода и преобразование его в машинные инструкци

Java уже довольно давно не интерпретируется байт кодом во время выполнения. Классы компилируются  в машинный код во время подгрузки. Конечно, программа несколько дольше стартует, но во время выполнения она ничуть не проигрывает.

Автор: Mayk 7.6.2008, 11:47
ОСТОРОЖНО, БОЯН:

Цитата(3 @ 14, 7.6.2008,  15:32 Найти цитируемый пост)

Java уже довольно давно не интерпретируется байт кодом во время выполнения. Классы компилируются  в машинный код во время подгрузки. Конечно, программа несколько дольше стартует, но во время выполнения она ничуть не проигрывает. 

Не проигрывает кому? http://shootout.alioth.debian.org/debian/benchmark.php?test=all&lang=allразве что? Или ява уже в состоянии тягаться с icc или хотя бы с gcc?

 smile 

Вообщем бенчмарк или не было.   smile 

 smile  smile  smile smile  smile smile  smile 

Автор: 3,14 7.6.2008, 11:59
Да были уже тесты, и на форуме постились где и Java опережала C/C++. Вопрос в том, что и как тестить. А сегодня времени читать эту ссылку+искать старую нет просто...
ЗЫ: Лично сам против C/C++ ничего не имею, хотя программирую, в основном на Java.

Автор: Мастер 7.6.2008, 12:03
Цитата(Lazin @ 6.6.2008,  08:43)
интерпретатор lua - не медленный, во всяком случае в таких задачах как работа со строками или поиск в таблице, он не медленнее Java, а даже наоборот...

Java медленный, если его байткод не компилять. JIT частично решает эту проблему. Ускоряет. Но оптимальый скомпилированный код на лету трудно получить. Если компилятор работает бысторо, то, скорее всего, он генерит не оптимальный код.
Java хороша вместе с Си. Т.е. - те места, которые критичны по времени исполнения, и в них тормозом является именно код(а не железо), то стоит написать нативную функцию. Фурье, к примеру, на Java писать не правильно. Однако, иногда призодится, если код в апплете работает.

Автор: MAKCim 7.6.2008, 12:17
рассмотрим арифметику
Java
Код

// Test.java

public class Test {
    public static void main(String args[]) {
        long t = 0;
        for (long i = 0; i < 0x100; ++i)
            for (long j = 0; j < 0x100; ++j)
                for (long k = 0; k < 0x100; ++k)
                    t += ((i - j) * ((k % ((i * j) == 0 ? 47 : (i * j))) >> 3) - (i % (j == 0 ? 89 : j)) / ((k - i) == 0 ? 25 : (k - i))) - 1;
        System.exit((int)t);
    }
}

C
Код

/* Test.c */

#include <unistd.h>

int main() {
    long t = 0;
    for (long i = 0; i < 0x100; ++i)
        for (long j = 0; j < 0x100; ++j)
            for (long k = 0; k < 0x100; ++k)
                t += ((i - j) * ((k % ((i * j) == 0 ? 47 : (i * j))) >> 3) - (i % (j == 0 ? 89 : j)) / ((k - i) == 0 ? 25 : (k - i))) - 1;
    _exit((int)t);
}


Код

# javac Test.java
# time java -classpath /home/rei3er Test

real    0m1.809s
user    0m1.776s
sys     0m0.008s

# icc -O3 Test.c -o Test
# time ./Test

real    0m0.891s
user    0m0.888s
sys     0m0.000s

# gcc -O3 -std=c99 Test.c -o Test
# time ./Test

real    0m1.419s
user    0m1.420s
sys     0m0.000s

итого с простой арифметикой Java работает в 1.809 / 0.891 ~ 2.03 раза медленнее, чем код ICC
и в 1.809 / 1.419 ~ 1.27 раз медленнее, чем код GCC

Автор: W4FhLF 7.6.2008, 12:27
MAKCim, интересно, чего туда icc напихал, что аж почти в два раза обошёл gcc? 

PS Так вот, кто такой rei3er smile

Автор: 3,14 7.6.2008, 12:44
MAKCim, тут нужно смотреть, ближайшие дня три, мне точно некогда будет :( Первое что приходит в голову: нужно проверить одинаковые ли диапозоны используются для java-кого long (жёстко прописан и не зависит от процессора) и c++ long (зависит от процессора).

Автор: Мастер 7.6.2008, 12:48
Цитата(Lazin @ 6.6.2008,  08:43)
джава все автоматически распаралеливать научилась?

А кто за тебя код писать будет?
В Java есть механизм запуска параллельных процессов. (Ищи по клюевому слову Thread.) Вот пример:
Код
import java.applet.*;

class Chew extends Thread {

    public void run() {
        for (int i=0; i<8; i++) {
            System.out.println("Chewing");
            try {
                Thread.sleep(400);
            } catch (InterruptedException e) {}
        }
    }
}

class Walk implements Runnable {
    
    public void run() {
        for (int i=0; i<8; i++) {
            System.out.println("Walking");
            try {
                Thread.sleep(300);
            } catch (InterruptedException e) {}
        }
    }
}

public class ChewWalk extends Applet {
    Chew chew = new Chew();
    Thread walk = new Thread(new Walk());
    
    public void init() {
        chew.start(); // старт первого потока
        walk.start(); // старт второго потока
    }

}

В Java есть механизм синзронизации параллельных процессов. (Ищи по клюевому слову synchronized.) Вот пример:
Код
import java.applet.*;

class Account {
 
   static int balance = 1000;
   static int expense = 0;

   static public synchronized void withdraw(int amount)
     {
       if (amount <= balance)
         {
           System.out.println("check: " + amount);
           balance -= amount;
           expense += amount;
           System.out.print("bal: " + balance);
           System.out.println(", spent: " + expense);
         }
       else
         {
           System.out.println("bounced: " + amount);
         }
     }
 }

class myThread extends Thread {
   public void run()
     {
       for (int i = 0; i < 10; i++)
         {
           try {
              sleep(100);
             } 
           catch (InterruptedException e) {}
           Account.withdraw((int) (Math.random() * 500 ));
         }
     }
 }

public class synchronize extends Applet {
 
  public void init()
    {
      new myThread().start();
      new myThread().start();
    }    
}
Тут создано два потока(праллельно выполняющихся процесса), а synchronized для withdraw разрещает доступ к этому методу только одному из потоков. (Другой будет ждать, пока метод освободится.)

Автор: Lazin 7.6.2008, 13:04
smile 
а используя нативный код потоки синхронизировать нельзя?

Добавлено через 25 секунд
становится все интересней и интересней smile

Автор: Мастер 7.6.2008, 13:07
Цитата(chipset @ 6.6.2008,  19:27)
Это никак не влияет ни на что. Точно так же могут существовать в одном пространстве и времени данные в какой нибудь shared memory. Как дополнительные функции к обьекту помогут существовать обьекту во в многопоточном пространстве? Эти функции легко вынести за пределы обьекта.

Всё, что можно на Java и на JavaScript, можно сделать и на Си, и на ASM. Разница в том, что Java компилятор и библиотеки помогут. (Поэтому можно написать быстро качественный код.) На Си придётся писать то, что в Java уже есть, и компилятор Си не поможет тебе там, где ты можешь сделать ошибку.

Приведу пример. NASA потеряла миллиард из-за ошибки программиста. Их спутник сгорел в атмосфере Юпитера. (Программист, подлец, перепутал футы с метрами.)
Пример не самый удачный. Есть другой. Нашь спутник (не помню где, на Венере, кажется) помер в семидесятых. Причина: компилятор фортрана. Он не заметил ошибку в коде. 
Тут было что-то связанное с циклом FOR. При некоторых ошибках в его написании, он превращается в валидную, с точки зрения компилятора, стоку.

Добавлено через 5 минут и 19 секунд
Цитата(Lazin @ 7.6.2008,  13:04)
а используя нативный код потоки синхронизировать нельзя?

 smile  smile Если бы это было так, Java не работала бы, поскольку в потоке вызываются системные функции, а они сплошь - native.

Автор: Lazin 7.6.2008, 13:27
Цитата(Мастер @  7.6.2008,  13:07 Найти цитируемый пост)
Если бы это было так, Java не работала бы, поскольку в потоке вызываются системные функции, а они сплошь - native. 

Это как?

Добавлено через 1 минуту и 12 секунд
Java разве не использует функции ядра операционной системы для синхронизации своих потоков?

Автор: Mayk 7.6.2008, 13:36
Цитата(Мастер @  7.6.2008,  16:48 Найти цитируемый пост)
В Java есть механизм запуска параллельных процессов. (Ищи по клюевому слову Thread.) Вот пример:

Это фигня а не распараллеливание. Вот эрланг с его легковесными процессами - это айс.

Цитата(Мастер @  7.6.2008,  17:07 Найти цитируемый пост)

Приведу пример. NASA потеряла миллиард из-за ошибки программиста. Их спутник сгорел в атмосфере Юпитера. (Программист, подлец, перепутал футы с метрами.)
Пример не самый удачный. Есть другой. Нашь спутник (не помню где, на Венере, кажется) помер в семидесятых. Причина: компилятор фортрана. Он не заметил ошибку в коде. 
Тут было что-то связанное с циклом FOR. При некоторых ошибках в его написании, он превращается в валидную, с точки зрения компилятора, стоку.

Не совсем понял что к чему. На яве что, нельзя допустить ошибок? smile 




Цитата(MAKCim @  7.6.2008,  16:17 Найти цитируемый пост)
итого с простой арифметикой Java работает в 1.809 / 0.891 ~ 2.03 раза медленнее, чем код ICC

эта строка была отквочена чтоб не забыть забенчить double'ы




Цитата(Lazin @  7.6.2008,  17:04 Найти цитируемый пост)
становится все интересней и интересней smile 

+1

зы. я уже правда потерял нить флейма и о чем мы вообще, но веселье продолжается.

Добавлено через 44 секунды
Цитата(Мастер @  7.6.2008,  16:48 Найти цитируемый пост)
В Java есть механизм синзронизации параллельных процессов. (Ищи по клюевому слову synchronized.) Вот пример:

в posix thread он тоже есть.

Автор: Lazin 7.6.2008, 13:38
этот код делает примерно то-же что и предыдущий пример на java  smile 
Код

boost::recursive_mutex mutex;

void thread_fn()
{
  boost::recursive_mutex::scoped_lock lock_it(mutex);
  for (int i = 0; i < 1000; ++i)
  {
     std::cout << i << std::endl;
  }
}

int main()
{
  boost::thread t(&thread_fn);
  boost::thread v(&thread_fn);
  v.join();
  t.join();
}


Добавлено через 5 минут и 28 секунд
Цитата(Мастер @  7.6.2008,  13:07 Найти цитируемый пост)
Тут было что-то связанное с циклом FOR. При некоторых ошибках в его написании, он превращается в валидную, с точки зрения компилятора, стоку.

 smile 

Цитата(Мастер @  7.6.2008,  13:07 Найти цитируемый пост)
Всё, что можно на Java и на JavaScript, можно сделать и на Си, и на ASM. Разница в том, что Java компилятор и библиотеки помогут. (Поэтому можно написать быстро качественный код.) На Си придётся писать то, что в Java уже есть, и компилятор Си не поможет тебе там, где ты можешь сделать ошибку.
для С++ есть огромное количество библиотек, для Си еще больше... велосипедостроение не для нас smile 

Приведу пример. NASA потеряла миллиард из-за ошибки программиста. Их спутник сгорел в атмосфере Юпитера. (Программист, подлец, перепутал футы с метрами.)
Пример не самый удачный. Есть другой. Нашь спутник (не помню где, на Венере, кажется) помер в семидесятых. Причина: компилятор фортрана. Он не заметил ошибку в коде. 

язык С++, в отличие от Java поддерживает метапрограммирование в compile time, есть как-бы две программы, первая выполняется в compile time, а вторая в run time...
так вот, компилятор С++ можно заставить во время компиляции проверять единицы измерения переменных в выражениях, и он не даст переменной имеющей тип Watt присвоить значение типа Amper smile

Добавлено через 6 минут и 56 секунд
в Java это можно сделать только в runtime

Автор: Мастер 7.6.2008, 13:58
Цитата
Не совсем понял что к чему. На яве что, нельзя допустить ошибок?
Современные компиляторы(ты этого можешь и не знать) устроены так, что синтаксическая ошибка, которую компилятор не увидит, становится маловероятной. (Практически невозможной.)
Логическая ошибка - это уж ты сам. Но и тут, как правило, компилятор помогает, поскольку логическая ошибка, если ты придерживаешься правил ООП, приводит к несоответствию классов, это компилятор отслеживать умеет.

Автор: MAKCim 7.6.2008, 14:00
Цитата(W4FhLF @  7.6.2008,  12:27 Найти цитируемый пост)
Так вот, кто такой rei3er

палюсь  smile 
я бы и сам хотел изменить ник, но пока нельзя

Цитата(3 @ 14, 7.6.2008,  12:44 Найти цитируемый пост)
нужно проверить одинаковые ли диапозоны используются для java-кого long (жёстко прописан и не зависит от процессора) и c++ long (зависит от процессора). 

да

Цитата(Мастер @  7.6.2008,  12:48 Найти цитируемый пост)
В Java есть механизм запуска параллельных процессов. (Ищи по клюевому слову Thread.) Вот пример:

гы-гы-гы  smile 

Код

static pthread_mutex_t tty_lock = PTHREAD_MUTEX_INITIALIZER;

static void * chew(void * argument) {
    int i = 0;
    for (; i < 8; i++) {
            pthread_mutex_lock(&tty_lock);
            puts("Chewing");
            pthread_mutex_unlock(&tty_lock);
            sleep(400);
    }
}

static void * walk(void * argument) {
    int i = 0;
    for (; i < 8; i++) {
            pthread_mutex_lock(&tty_lock);
            puts("Walking");
            pthread_mutex_unlock(&tty_lock);
            sleep(300);
    }
}

int main() {
    pthread_t chew_t, walk_t;
    pthread_create(&chew_t, NULL, &chew, NULL);
    pthread_create(&walk_t, NULL, &walk, NULL);
    pthread_join(walk_t, NULL);
    pthread_join(chew_t, NULL);
    return 0;
}



Цитата(Мастер @  7.6.2008,  12:48 Найти цитируемый пост)
В Java есть механизм синзронизации параллельных процессов. (Ищи по клюевому слову synchronized.) Вот пример:

аналогично

Код

#define BALANCE 0
#define EXPENSE 0

static pthread_mutex_t routine_lock = PTHREAD_MUTEX_INITIALIZER;
static pthread_key_t data[2];

static void withdraw(int amount) {
    int balance = pthread_getspecific(data[BALANCE]);
    int expense = pthread_getspecific(data[EXPENSE]);
    if (amount <= balance) {
           printf("check: %d\n", amount);
           balance -= amount;
           expense += amount;
           printf("bal: %d, spent: %d\n", balance, expense);
    } else {
        printf("bounced: %d\n", amount);
        return NULL;
    }
    pthread_setspecific(data[BALANCE], (const void*)balance);
    pthread_setspecific(data[EXPENSE], (const void*)expense);
}

static void * routine(void * argument) {
    int i = 0;
    pthread_setspecific(data[BALANCE], (const void*)1000);
    pthread_setspecific(data[BALANCE], (const void*)0);
    for (; i < 10; i++) {
        sleep(100);
        pthread_mutex_lock(&routine_lock);
        withdraw(rand() * 500);
        pthread_mutex_unlock(&routine_lock);
    }
}

int main() {
    pthread_t first, second;
    pthread_key_create(data, NULL);
    pthread_key_create(data + 1, NULL);
    pthread_create(&first, NULL, &routine, NULL);
    pthread_create(&second, NULL, &routine, NULL);
    pthread_join(first, NULL);
    pthread_join(second, NULL);
    return 0;
}

Автор: Мастер 7.6.2008, 14:04
Цитата
Java разве не использует функции ядра операционной системы для синхронизации своих потоков?
Именно это она и делает. Но как она это делает - прописано как раз в native-методах. Реализация механизмов синхронизации потоков и их приоритетов, выделения памяти и сборки мусора - всё сплошь натив. Это ядро Java. Байт код выше. По верх этого.
Возьмите Java1 и посмотрите исходники (как AWT в ней устроено?). (Обалденно интересно.) Тогда вы поймете Java2. Эсли вы первую яву не поняли, то этот монстр(ява два) вам не отдастся никогда.

Автор: Lazin 7.6.2008, 14:09
Цитата(Мастер @  7.6.2008,  14:04 Найти цитируемый пост)
Именно это она и делает. Но как она это делает - прописано как раз в native-методах. Реализация механизмов синхронизации потоков и их приоритетов, выделения памяти и сборки мусора - всё сплошь натив. Это ядро Java. Байт код выше. По верх этого. 

ну тогда она ничего нового не предлагает, все то-же самое что и в других языках =)

Автор: MAKCim 7.6.2008, 14:19
Цитата(Mayk @  7.6.2008,  13:36 Найти цитируемый пост)
эта строка была отквочена чтоб не забыть забенчить double'ы

боюсь, будет разгром
ибо ICC порвет всех

Код

#include <stdio.h>

int main() {
    double t = 0., i, j, k;
    for (i = 0.; i < 1.; i += 0.0005)
        for (j = 0.; j < i; j += 0.0005)
            for (k = 0.; k < j; k += 0.005)
                t += ((i * j * k - 0.75) / (i + j / 34.321 + k + 1.089)) * 1.08;
    printf("%f\n", t);
}


Код

public class Test {
    public static void main(String args[]) {
        double t = 0., i, j, k;
        for (i = 0.; i < 1.; i += 0.0005)
            for (j = 0.; j < i; j += 0.0005)
                for (k = 0.; k < j; k += 0.005)
                    t += ((i * j * k - 0.75) / (i + j / 34.321 + k + 1.089)) * 1.08;
        System.out.printf("%f\n", t);
    }
}

Код

# time java -classpath /home/rei3er Test

real    0m5.328s
user    0m5.280s
sys     0m0.004s

icc
# time ./Test

real    0m2.416s
user    0m2.416s
sys     0m0.000s

gcc
# time ./Test

real    0m2.308s
user    0m2.308s
sys     0m0.000s


 smile 

Автор: Мастер 7.6.2008, 14:24
Цитата(Lazin @ 7.6.2008,  14:09)
ну тогда Java ничего нового не предлагает, все то-же самое что и в других языках =)

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

Автор: MAKCim 7.6.2008, 14:27
блин, даже если скомпилировать под конкретный C2D
Код

# icc -O3 -xT Test.c -o Test

real    0m2.338s
user    0m2.336s
sys     0m0.000s

все равно больше, чем у GCC
 smile 

Автор: Мастер 7.6.2008, 14:37
Цитата(MAKCim @ 7.6.2008,  14:19)
ICC порвет всех

Вот что я нашел в сети: http://www.linux.org.ru/view-message.jsp?msgid=2129413&page=3
Цитата
По всем тестам ВС++ превосходит GCC, а с icc одна проблема - это [censored33! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме] выдает иногда неправильный код. И вообще на фиг мне усрался этот icc. A GCC не кроссплатформенна твою мать. МинГовно это не GCC.

Автор: Lazin 7.6.2008, 14:41
Цитата(Мастер @  7.6.2008,  14:24 Найти цитируемый пост)
Ну это ты зря...
Java освобождает тебя от мыслей о том, как это сделано. Ты просто юзаешь удобную, современную вещь. При этом, то, что ты написал, будет работать везде, на любой железке, на которой реализована Java (если, конечно, у железяки мощи хватит исполнить твой код). 

а что, программирование на Java освобождает программиста от заботы о синхронизации потоков? smile 
что будет если 1 поток будет добавлять элементы в список, а другие читать этот список?

Автор: Мастер 7.6.2008, 14:54
Цитата
а что, программирование на Java освобождает программиста от заботы о синхронизации потоков?
Ты задаёшь вопросы, на которые лень отвечать. (Ты сам на них можешь ответить.)
Цитата
что будет если 1 поток будет добавлять элементы в список, а другие читать этот список?
Для этого и нужен механизм синхронизации. (Он нужен, чтоб коллизий не возникало и, если уж они случились - чтоб разрешить коллизию.)

Автор: Lazin 7.6.2008, 15:03
Цитата(Мастер @  7.6.2008,  14:54 Найти цитируемый пост)
Ты задаёшь вопросы, на которые лень отвечать. (Та сам на них можешь ответить.)


Цитата(Мастер @  7.6.2008,  14:54 Найти цитируемый пост)
Для этого и нужен мехпнизм синхронизации. (Он нужен, чтоб коллизий не возникало и, если уж они случились - чтоб разрешить коллизию.) 


я просто пытаюсь понять, чем Java в этом плане так принципиально отличается от того-же С++, чем она мне помогает.

поможет ли Java отследить race condition, deadlock или падение производительности из-за неправильного использования многопоточности.

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

Автор: Мастер 7.6.2008, 15:14
Цитата
race condition, deadlock
Я не знаю - что это такое. Когда я писал на Си, там такого(кажется) не было. Впрочем, прошло много лет, мог и забыть.
К Java можно относиться как к продвинутому Shell поверх базовых натв-функций. (К весьма продвинотому Shell.)
Набора стандартных возможностей, которые предоставляет Java, как правил - хватает (ну, или - должно хватать), чтобы реализовать большинство практических задачь, на большинстве процессоров и архитектур. Эти возможности реализованы в библиотеках и в самой JVM. Библиотеки универсальны, реализованы и отлажены профессионалами. Есть исходники, их можно посмотреть, изучить, научится правильно программировать. Что ещё нужно программисту.
Цитата
например С++ программисту  сложно понять даст ли преимущество в скорости распараллеливание цикла, или только добавит тормозов, или - стоит лочить данный объект, или это приведет к простою других потоков, которые его все равно не изменяют...
такие вещи, по идее, должны быть лучше известны компилятору, чем программисту, но на практике это все выполняется вручную...
Согласен. Программист не может оторваться от архитектуры. Если код написан для двух, или даже - четырёх, ядерного процессора, то - не факт, что его не придётся переписыать для машины с архитектурой РИСК. В этой архитектуре уаждый процессор - маленькая  JVM,  а писюке в одном процессоре может их быть несколько(если есть необходимость). Поэтому процесс оптимизауии Java кода нужно изучать исходники библиотек для конкретной архитектуры. Но, если вы работаете в рамках одной из этих двух архитектур, то код, видимо, переписывать не придётся.

Автор: Lazin 7.6.2008, 15:33
Цитата(Мастер @  7.6.2008,  15:14 Найти цитируемый пост)
Если код написан для двух, или даже - четырёх, ядерного процессора, то - не факт, что его не придётся переписыать для машины с архитектурой РИСК. В этой архитектуре уаждый процессор - маленькая  JVM,  а писюке в одном процессоре может их быть несколько(если есть необходимость).

о сколько нам открытий чудных... smile

Добавлено через 39 секунд
Цитата(Мастер @  7.6.2008,  15:14 Найти цитируемый пост)
К Java можно относиться как к продвинутому Shell поверх базовых натв-функций. (К весьма продвинотому Shell.)

странно, а разве это не ЯП общего назначения?

Добавлено через 1 минуту и 59 секунд
Цитата(Мастер @  7.6.2008,  15:14 Найти цитируемый пост)
Набора стандартных возможностей, которые предоставляет Java, как правил - хватает (ну, или - должно хватать), чтобы реализовать большинство практических задачь, на большинстве процессоров и архитектур. Эти возможности реализованы в библиотеках и в самой JVM. Библиотеки универсальны, реализованы и отлажены профессионалами. Есть исходники, их можно посмотреть, изучить, научится правильно программировать. Что ещё нужно программисту.

ну так кто спорит, что на Java можно (и даже удобно) программировать, вопрос только в том что там есть такого особенного для "синхронизации процессов" как вы говорить smile 

Автор: W4FhLF 7.6.2008, 15:37
Цитата(Мастер @  7.6.2008,  15:14 Найти цитируемый пост)
Я не знаю - что это такое. Когда я писал на Си, там такого(кажется) не было. Впрочем, прошло много лет, мог и забыть.


Это от языка не зависит smile Но понять можно, в 80х всё было однозадачным, куда уж там smile

Автор: Мастер 7.6.2008, 15:54
Цитата
странно, а разве это не ЯП общего назначения?
Конечно язык программирования. А когда вы .bat пишите, вы - не программируете разве?
Цитата
ну так кто спорит, что на Java можно (и даже удобно) программировать, вопрос только в том что там есть такого особенного для "синхронизации процессов" как вы говорить
Вопервых Java - ООП-зык, а Си - процедурный. Одного этого достаточно, чтоб отказаться от Си, как языка программирования на параллельной архитектуре или - для многозадачного программирования. Язык Java заточен под параллельное программирование. В ней проработан механизм синхронизации и разрешения коллизий. Что ещё нужно?
Цитата
Это от языка не зависит  Но понять можно, в 80х всё было однозадачным, куда уж там
Именно так. Но, никому из нас в голову бы не пришло распараллеливать Си(или Фортран). Это - противоестественно. Процедурные языки для этого непригодны впринципе.

Автор: Lazin 7.6.2008, 16:25
Цитата(Мастер @  7.6.2008,  15:54 Найти цитируемый пост)
Именно так. Но, никому из нас в голову бы не пришло распараллеливать Си(или Фортран). Это - противоестественно. Процедурные языки для этого непригодны впринципе.

Java - это императивный яп, то-есть язык, в котором программист определяет порядок вычислений, в этом плане Java от C ничем не отличается, а ООП это просто способ удобной структуризации кода, вот и все...
Ну так вот, императивный стиль программирования входит в противоречие с параллельным программированием, так как порядок выполнения конструкций языка не определен (вернее определен, но только для одного трэда, а как они там друг на друга наложатся никто не знает), а вся эта синхронизация нужна только для того, что-бы хотя-бы на уровне методов одного объекта, мыслить категориями 80-х годов зная, что другие потоки в данный момент стоят и ждут пока метод отработает в этом потоке...
Что то новое могут предложить функциональные языки, там порядок вычислений неважен, а вместо общей памяти, для связи между потоками данные копируются, поэтому все эти локи-анлоки, там не нужны.

Автор: W4FhLF 7.6.2008, 16:27
Цитата(Мастер @  7.6.2008,  15:54 Найти цитируемый пост)
 Это - противоестественно. Процедурные языки для этого непригодны впринципе.


Хорошо, давайте выберем задачу, которую можно распараллелить и при этом нужно синхронизировать отдельные части, назначить области видимости каких-то данных или даже редукцию, в общем, чтобы задача была необъёмная, но с подвыподвертом smile Вы реализуете на Java, я на С, а потом сравним пригодность одного и другого smile Что скажете? 

Автор: JackYF 7.6.2008, 16:47
Цитата(Мастер @  7.6.2008,  13:24 Найти цитируемый пост)
При этом, то, что ты написал, будет работать везде, на любой железке, на которой реализована Java

Ещё раз: тебя не смущает, что GCC доступен на большем количестве архитектур, чем Java? smile

Добавлено через 5 минут и 33 секунды
Цитата(Мастер @  7.6.2008,  13:37 Найти цитируемый пост)
По всем тестам ВС++ превосходит GCC, а с icc одна проблема - это [censored33! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме] выдает иногда неправильный код. И вообще на фиг мне усрался этот icc. A GCC не кроссплатформенна твою мать. МинГовно это не GCC.

Я фигею, дорогая редакция. Нашёл, блин, авторитетный источник - анонимуса на ЛОРе  smile 

Автор: Мастер 7.6.2008, 17:03
Цитата
Вы реализуете на Java
В данный момент у меня нетокмо JDK не установлен, но и JRE присутствует в отсутствии. (Я пытаюсь заставить себя писать магазин, но - мои усилия тщетны.)
К этому можно было бы вернуться, позже, но у меня задачи пока нет на Java. (Сори.)
Впринципе, если вы хотите быстро с Си перейти на Java, могу дать совет и прислать примеры.
Совет: Есть такая книга: "Программирование на Java, 1001 совет" Марк с. Чен, Стивен В. Грифис, Энтони Ф. Изи, Издательство Попури, 1997 год.
Книга, хотя и старая, но ничего лучше я нет видел. У меня есть приеры(0.8М) к ней, и, кажется, английский вариант этой книги в электронном виде.
Ссылка: http://ru.sun.com/java/books/online/vol1/ch1.html
Цитата
Нашёл... авторитетный источник...
Я пытался узнать, что есь ICC. Выяснил, что это - сишный компилятор для какого-то типа процессоров. (Ну и это.)
Скорость исполнения Java байткода увеличится, и будет не хуже чем у Си, если его компильнуть, но при этом может увеличиться обём кода, что не всегда допустимо.
Скорость выполнения кода часто не так важна, как сам факт того, что он(пусть медленно но) работает.

Автор: JackYF 7.6.2008, 19:22
Цитата(Мастер @  7.6.2008,  16:03 Найти цитируемый пост)
Скорость выполнения кода часто не так важна

... и поэтому, наверное, пользователи жалуются, что то тормозит, это тормозит... smile

Автор: Lazin 7.6.2008, 19:39
Ну, для многих применений Java очень даже хороша, многие вещи там делаются намного проще чем на С++ и часто более экономически оправдано. Если к примеру основную нагрузку на систему создает работа СУБД, то на чем написана программа которая с ней работает уже вопрос третий smile 
Но все-же, неприятно когда ты это запускаешь, а оно как начнет тормозить smile 

Автор: MAKCim 7.6.2008, 21:01
Мастер начинает утомлять своим бредом
однако пока smile

Добавлено через 8 минут и 55 секунд
Цитата(Мастер @  7.6.2008,  15:14 Найти цитируемый пост)
Я не знаю - что это такое

и этот человек (троль?) еще говорит о распараллеливании...


Цитата(Мастер @  7.6.2008,  15:14 Найти цитируемый пост)
Когда я писал на Си, там такого(кажется) не было.

 smile 


Цитата(Мастер @  7.6.2008,  15:14 Найти цитируемый пост)
К Java можно относиться как к продвинутому Shell поверх базовых натв-функций. (К весьма продвинотому Shell.)

 smile 


Цитата(Мастер @  7.6.2008,  15:14 Найти цитируемый пост)
Если код написан для двух, или даже - четырёх, ядерного процессора, то - не факт, что его не придётся переписыать для машины с архитектурой РИСК

 smile 
почитай для начала, чем отличаются CISC и RISC процессоры
а за одно, зачем нужен компилятор  smile 


Цитата(Мастер @  7.6.2008,  15:54 Найти цитируемый пост)
Вопервых Java - ООП-зык, а Си - процедурный. Одного этого достаточно, чтоб отказаться от Си, как языка программирования на параллельной архитектуре или - для многозадачного программирования. Язык Java заточен под параллельное программирование. В ней проработан механизм синхронизации и разрешения коллизий. Что ещё нужно?

что ни фраза, то перл (ну кроме, быть может, первой)

Цитата(Мастер @  7.6.2008,  17:03 Найти цитируемый пост)
Скорость исполнения Java байткода увеличится, и будет не хуже чем у Си, если его компильнуть, но при этом может увеличиться обём кода, что не всегда допустимо.

пипец...
ну и нафиг тогда Java вообще?
смысл байт-кода - кроссплатформенность на уровне бинарных файлов

в общем резюме: Мастер, ты абсолютно не разбираешься в том, о чем говоришь
тут два варианта: либо ты просто стебешься, либо хуже...  smile 

Автор: chipset 7.6.2008, 21:31
Цитата(MAKCim @  7.6.2008,  11:01 Найти цитируемый пост)

в общем резюме: Мастер, ты абсолютно не разбираешься в том, о чем говоришь
тут два варианта: либо ты просто стебешься, либо хуже...  smile  

user posted image

Автор: Мастер 8.6.2008, 22:29
Цитата(JackYF)
... и поэтому, наверное, пользователи жалуются, что то тормозит, это тормозит... 
Факт того, что код работает - первостепенный. Если оптимизация кода с целью ускорить код приведёт к невозможности его исполнить, то такое ускорение никому не нужно. Например, в WinXP есть свопфайл. Если памяти не хватает, то ОС выгружает в этот файл неактуальную в данный момент информацию. Если этот своп(кеш) отключит - компьютер станет работать быстрее, если памяти хватает. Но на задачах, требующих больше памяти, компьютер станет неработоспособен.
Байт код не только для кросплатформенности создан, он ещё позволяет оптимальнее использовать ресурсы компьютера. Если компильнуть байт код, то получится натив. Этот натив может потребовать больше ресурсов.
Цитата
Я не знаю - что это такое
А я и не должен знать то, что было придумано для распараллеливания Си или Фортрана. (У меня мозгов не хватило бы, если бы я последние 30 лет изучал глупость.)

Автор: nerezus 9.6.2008, 06:47
Цитата

Если компильнуть байт код, то получится натив. Этот натив может потребовать больше ресурсов.
 В Java он и так компилируется на момент исполнения.

http://ru.wikipedia.org/wiki/JIT

Автор: Mayk 9.6.2008, 07:23
smile
Цитата(Мастер @  9.6.2008,  02:29 Найти цитируемый пост)
А я и не должен знать то, что было придумано для распараллеливания Си или Фортрана. (У меня мозгов не хватило бы, если бы я последние 30 лет изучал глупость.)

Ты хочешь сказать что в яве дедлоки невозможны? Отвечай "да" или "нет".

Автор: Lazin 9.6.2008, 11:32
Цитата(Mayk @  9.6.2008,  07:23 Найти цитируемый пост)
Ты хочешь сказать что в яве дедлоки невозможны? Отвечай "да" или "нет".

он уже написал выше, что не знает что это такое smile

Добавлено через 1 минуту и 9 секунд
Цитата(Мастер @  7.6.2008,  15:14 Найти цитируемый пост)

Цитата

race condition, deadlock

Я не знаю - что это такое. Когда я писал на Си, там такого(кажется) не было. Впрочем, прошло много лет, мог и забыть.


Автор: Мастер 9.6.2008, 11:55
Цитата
В Java он и так компилируется на момент исполнения.
JIT - тормоз на стадии запуска, к тому же - компилляция компиляции рознь. Оптимальную компиляцию быстро не сделаешь. И ещё - JIT в обильниках, к примеру, нет. его и нет в подавляющем большинстве реализаций Java для встроенных систем.

Впрочем, не о том говорим. Я так понимаю - вопрос стоит такой: нужно ли переходить с Си на Java для программирования контроллеров. Я уверен - нужено.

Автор: MAKCim 10.6.2008, 13:03
Цитата(Мастер @  9.6.2008,  11:55 Найти цитируемый пост)
И ещё - JIT в обильниках, к примеру, нет. его и нет в подавляющем большинстве реализаций Java для встроенных систем.

там процессоры байт-код напрямую исполняют?  smile

Добавлено через 3 минуты и 8 секунд
Цитата(Мастер @  9.6.2008,  11:55 Найти цитируемый пост)
Впрочем, не о том говорим

мы говорим в данный момент о том, что вы абсолютно не разбираетесь в том, о чем спорите
навряд ли кто-то ваши слова воспринимает всерьез

Автор: LSD 10.6.2008, 13:13
Цитата(MAKCim @  10.6.2008,  14:03 Найти цитируемый пост)
там процессоры байт-код напрямую исполняют?

Зависит от процессора, некоторые да.

Автор: MAKCim 10.6.2008, 13:33
Цитата(LSD @  10.6.2008,  13:13 Найти цитируемый пост)
Зависит от процессора, некоторые да. 

хорошо

Автор: Alexandr87 12.6.2008, 07:27
Цитата(LSD @  10.6.2008,  16:13 Найти цитируемый пост)
Зависит от процессора, некоторые да. 

LSD, если не затруднит, можно список таких процессоров и моделек телефонов или девайсов в которых они используются.


Автор: Lazin 12.6.2008, 09:26
я не LSD, но вот http://www.atmel.com/products/AVR32/

Автор: LSD 12.6.2008, 21:41
Цитата(Alexandr87 @  12.6.2008,  08:27 Найти цитируемый пост)
LSD, если не затруднит, можно список таких процессоров и моделек телефонов или девайсов в которых они используются.

Это ты лучше у http://vingrad.ru/@javastic-а или еще у кого из J2ME-шников спроси.

Вообще у Sun есть такая эталонная реализация такого процессора picoJava:
Цитата(http://java.sun.com/docs/white/platform/javaplatform.doc1.html)
Improve Java performance dramatically in embedded applications. The picoJavaTM CPU core is a licenseable technology that removes the need for a Java interpretor or JIT (Just-In-Time compiler) by directly executing Java bytecode into the silicon. This simplifies system design, improves performcnce, and reduces memory requirements. picoJava helps licensees develop PDAs, smart-phones and other embedded consumer devices that run Java at its most cost-effective and efficient.

The picoJava processor core is optimized for Java and its unique demands, such as multithreading and garbage collection. Sun Microelectronics' microJavaTM-701 processor prototype validates picoJava design and paves the way for licensees to produce their own Java-based microprocessors and devices. Evaluation boards for picoJava II, based on the 701 will soon be available for demonstration and design.

а уж каждый производитель процессоров волен ее лицензировать и использовать в своих процессорах.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)