Страница 3 из 5

Re: На чем писать сервер - Java or C/C++

Добавлено: 14 мар 2009, 15:48
sobomax
badger писал(а):Разбиение задач на независимые модули позволяет избежать многих ошибок, возникающих в многопоточных приложениях с их совместными данными.
В теории. Это кстати любимый аргумент поклонников микроядер, последние 20 лет или сколько там. Реальные ядра все сплош и рядом монолитные, тем не менее. Задайте вопрос себе почему.

Threads вполне нормальный инструмент, если им пользоваться правильно. А сдуру как известно можно сломать все что угодно. :lol:

-Maxim

Re: На чем писать сервер - Java or C/C++

Добавлено: 14 мар 2009, 15:51
badger
sobomax писал(а):
badger писал(а):Через какие десять лет? Все эти модели уже есть. Посмотрите на Erlang, на Clojure, на Scala with Actors.
Ага, очень убедительно. Сравнить например количество кода писанного на жабе и на этих языках. 1,000,000:1 или того меньше?
Ну и о чём это говорит? Говорит только о том, что быдлописателей больше, чем хороших программистов и менеджеров. Куда удобнее написать что-то на Java с потоками, и затем ковыряться в этом дерьмище, оправдывая своё существование.

Я не в Вашу сторону. Вас я более-менее знаю и уважаю. Вы спец. Помню по FreeBSD activities и по многим прочим делам.

А multi-threading Вы по приколу тут защищаете. Я уверен в этом :D

Впрочем, я тоже забавы ради раздул эту беседу.

Re: На чем писать сервер - Java or C/C++

Добавлено: 14 мар 2009, 15:52
badger
sobomax писал(а):В теории. Это кстати любимый аргумент поклонников микроядер, последние 20 лет или сколько там. Реальные ядра все сплош и рядом монолитные, тем не менее. Задайте вопрос себе почему.
Нет, для меня это не в теории, а в практике.
sobomax писал(а):Threads вполне нормальный инструмент, если им пользоваться правильно. А сдуру как известно можно сломать все что угодно. :lol:
Сдуру можно да, всё, что угодно :)

Re: На чем писать сервер - Java or C/C++

Добавлено: 14 мар 2009, 15:56
sobomax
badger писал(а):А multi-threading Вы по приколу тут защищаете. Я уверен в этом :D
Скорее это из серии "у кого чего болит".
badger писал(а):Впрочем, я тоже забавы ради раздул эту беседу.
Суббота-с. Можно и пофлудить. ;-)

-Maxim

Re: На чем писать сервер - Java or C/C++

Добавлено: 14 мар 2009, 16:08
CdR
sobomax писал(а):Так рельсы то на руби, вроде? :lol:
Макс. rtfm, блин! Что такое руби & etc

jfyi: Мой "любимый" - Forth.

Re: На чем писать сервер - Java or C/C++

Добавлено: 14 мар 2009, 16:11
badger
CdR писал(а):
sobomax писал(а):Так рельсы то на руби, вроде? :lol:
Макс. rtfm, блин! Что такое руби & etc

jfyi: Мой "любимый" - Forth.
Кстати, если Forth любимый, Вы на Factor не смотрели? Как он Вам?

Re: На чем писать сервер - Java or C/C++

Добавлено: 15 мар 2009, 08:52
Marmot
badger писал(а):
В том и дело, как показывает мой опыт, на практие это работает лучше. Разбиение задач на независимые модули позволяет избежать многих ошибок, возникающих в многопоточных приложениях с их совместными данными.

Опять же, посмотрите на масштабируемость Erlang. Вполне даже 'на практике'. Или на ядро QNX. Вообще трудно найти что-то более ясное и красивое, чем messaging mechanism.

Другое дело, что в Java альтернатив практически нет. Остаётся защищать только многопоточность. Всё остальное выглядит криво на базе Java.
Тэксс...
Стоит замутить стартап, и погрузится в пучины кодирования, как приходит на каморку какой-то змеевод и начинает катить бочки на мою любимую Java и еще более любимую multithread-ность :)
У каждого языка есть своя ниша, у каких-то языков она большая, и каких-то не очень...
То-же Erlang, попробуйте на нем написать обработку картинок, и после изменения одного байта, копируйте 100-200М в новую переменную, чтобы ее можно было сейфно шарить между процессами.
Ну то, что традициoнный Python многоядерностью не дружит, это всем понятно, кстати, а что вы будете делать на 1К ядер, 1К процессов стартовать? А какой там будет overhead, вы преставляте?
Криво можно писать на любим языке. Я например буду криво писать на Python-е, буде мне придется, а на Java я уже скока пишу, и именно с 500-1000 потоков, и все нормально работает. Каждому свое, как говорится :)
Опять же есть язык Java, а есть JVM, что намного более круче :)
Те же Scala, Closure, Jython на ней прекрасно бегают, вот еще бы нормальную TCO добавить, хотя и с трамплинами все неплохо получается, только не так быстро :)
Вотя сейчас я пишу сервак который должен делать одновременно и очень быстрый network IO, компилить на ходу и выполнять код на JavaScript и быстро, быстро делать 2D collision detection :)
Работающий прототип на Java был написан за неделю :)
Я хотел сначала на Scala это написать, но после того как понял, что я нифига не могу преставить во что скомпилится та или иная конструкция и сколько CPU она съест на выполнение, плюнул и стал писать на том, что понятнее в плане генерации кода.
А вот может ли Python по raw performance сравнится с Hotspot-ом?

Re: На чем писать сервер - Java or C/C++

Добавлено: 15 мар 2009, 10:17
badger
Marmot писал(а):Стоит замутить стартап, и погрузится в пучины кодирования, как приходит на каморку какой-то змеевод и начинает катить бочки на мою любимую Java и еще более любимую multithread-ность :)
Протестую! Я не змеевод, я хороший. Просто хотелось народ немного раззадорить.
Marmot писал(а):а что вы будете делать на 1К ядер, 1К процессов стартовать? А какой там будет overhead, вы преставляте?
Как я уже писал выше, для моих требований этого ничего не надо было. И вообще болезнь многих стартапов -- все считают, что их разработки должны быть рассчитаны на сверхнеобычную нагрузку. В реальности большинству стартапов хватило бы какого-нибудь дохленького сервака. Я не в Ваш огород камень, так как понятия не имею, что за стартап у Вас. Но в целом картина именно такая.
Marmot писал(а):Криво можно писать на любим языке. Я например буду криво писать на Python-е, буде мне придется, а на Java я уже скока пишу, и именно с 500-1000 потоков, и все нормально работает. Каждому свое, как говорится :)
Неа, Python -- высокоуровневый язык. Если бы Вы его освоили, работали бы с ним раз в десять продуктивнее, чем с Java. Просто потому, что многие сущности в нём проще описываются и нагляднее смотрятся. То, что в Java Вы делаете в 100 строк, в Python было бы строк в десять.
Marmot писал(а):Опять же есть язык Java, а есть JVM, что намного более круче :)
Те же Scala, Closure, Jython на ней прекрасно бегают, вот еще бы нормальную TCO добавить, хотя и с трамплинами все неплохо получается, только не так быстро :)
Ну а я о чём? Я именно их и упоминал! Хотя лично мне Clojure не нравится. Наелся уже Common Lisp подобных языков. Надоело. А Scala ничего так. Очень здорово напоминает ML языки, хотя не сказал бы, что настолько хорош по выразительности, как, скажем, Objective Caml.
Marmot писал(а):Вотя сейчас я пишу сервак который должен делать одновременно и очень быстрый network IO, компилить на ходу и выполнять код на JavaScript и быстро, быстро делать 2D collision detection :)
Работающий прототип на Java был написан за неделю :) Я хотел сначала на Scala это написать, но после того как понял, что я нифига не могу преставить во что скомпилится та или иная конструкция и сколько CPU она съест на выполнение, плюнул и стал писать на том, что понятнее в плане генерации кода.
Круто! А жаль, что на Scala не написали. Интересно было бы посмотреть, насколько сопоставима производительность. Думаю, была бы близка.
Marmot писал(а):А вот может ли Python по raw performance сравнится с Hotspot-ом?
Очень сильно зависит от задач. В общем Python конечно же тормознее, чем Java хоть с hotstop, хоть без.

Re: На чем писать сервер - Java or C/C++

Добавлено: 15 мар 2009, 12:58
Marmot
badger писал(а):...Python -- высокоуровневый язык. Если бы Вы его освоили, работали бы с ним раз в десять продуктивнее, чем с Java. Просто потому, что многие сущности в нём проще описываются и нагляднее смотрятся.
Например? Кроме отсуствия эффективных closures я особой разницы в сущностях не заметил

badger писал(а):То, что в Java Вы делаете в 100 строк, в Python было бы строк в десять.
Да, Java язык более многословный, только в наше время при наличии мощнейших средств разработки, никто полностью программы на Java не пишет.
Я, например, сам ввожу только около 15-20% символов в мой код, осталное мне дописывает моя IDE, быстро и без ошибок.
Это позволяет строить практически полность самодокументированный код, с очень высоко описательными идентификаторами.
У меня названия методов и калссов бывают по 30-40-50 символов, полностью описывающих, что данная хрень делает...
Я уже не говорю про офигительные возможности рефакторинга, практически недостпуные в dynamically-typed языках.
Как я уже писал, каждому свое, пусть будет больше языков, хороших и разных, это как религия, кому что больше подходит :)

badger писал(а): А жаль, что на Scala не написали. Интересно было бы посмотреть, насколько сопоставима производительность. Думаю, была бы близка.
Я мог бы запросто написать с гарантiрованно сопоставимой производительностью, только вот это была бы практически, таже Java, a вот все вкусности стоя дополнительные расходы...
badger писал(а):. В общем Python конечно же тормознее, чем Java хоть с hotstop, хоть без.
Когда стоит задача выжать из железа по максимуму и в короткие сроки, лучше Java(C#) пока ничего нету...

Re: На чем писать сервер - Java or C/C++

Добавлено: 15 мар 2009, 13:56
badger
Marmot писал(а):Например? Кроме отсуствия эффективных closures я особой разницы в сущностях не заметил
Примеры здесь не хочу приводить. Можете погуглить, есть масса сравнений идиоматических конструкций написанных на Java и Python в две колонки Java vs Python. Очень наглядно. Java чрезвычайно многословный язык. И это факт. В значительной степени из-за того, что это язык с типами в отличие от Python. А также из-за того, что это C-подобный язык. Синтаксис Python намного более ёмкий.
Marmot писал(а):
badger писал(а):То, что в Java Вы делаете в 100 строк, в Python было бы строк в десять.
Да, Java язык более многословный, только в наше время при наличии мощнейших средств разработки, никто полностью программы на Java не пишет.
Согласен. Но читабельность это не улучшает. А как известно, мало программу написать, более важно, чтобы её легко было читать. Python читается значительно легче, чем Java.
badger писал(а):Я уже не говорю про офигительные возможности рефакторинга, практически недостпуные в dynamically-typed языках. Как я уже писал, каждому свое, пусть будет больше языков, хороших и разных, это как религия, кому что больше подходит :)
Согласен про рефакторинг и про каждому своё. Так я и сам пишу и писал на C++, Java, Python и т.д. Я прагматик, если Java, то Java. И вообще, Java -- канадское творение, так что вот!

Marmot писал(а):
badger писал(а): А жаль, что на Scala не написали. Интересно было бы посмотреть, насколько сопоставима производительность. Думаю, была бы близка.
Я мог бы запросто написать с гарантiрованно сопоставимой производительностью, только вот это была бы практически, таже Java, a вот все вкусности стоя дополнительные расходы...
Вот это мне и интересно. Насколько бы пострадала производительность. К сожалению, мало что найти можно по этому поводу. Scala практически не используется в широких массах. А уж тем более мало у кого есть время 'развлекаться', дублировать что-то на Scala и сравнивать производительность с Java.
Marmot писал(а):
badger писал(а):. В общем Python конечно же тормознее, чем Java хоть с hotstop, хоть без.
Когда стоит задача выжать из железа по максимуму и в короткие сроки, лучше Java(C#) пока ничего нету...
Естественно низкоуровневые языки вроде Java или C++ более подходящи для таких задач. Я согласен. Хотя опять же, Objective Caml, например, очень шустёр, но у него свои серьёзные минусы в сравнении с той же Java -- невозможность создавать программы для мультиядерных архитектур и дохленькая стандартная библиотека.

Re: На чем писать сервер - Java or C/C++

Добавлено: 15 мар 2009, 14:07
Marmot
badger писал(а): есть масса сравнений идиоматических конструкций написанных на Java и Python в две колонки Java vs Python.
Да видел я все это, написаны они, как правило, любителями Python-а. Для меня все эти сравнения выглядят неубедительно, просто абсолютно, разговор идет на детском урoвне типа System.out.println vs print. Это даже не смешно

badger писал(а):
Но читабельность это не улучшает. А как известно, мало программу написать, более важно, чтобы её легко было читать. Python читается значительно легче, чем Java.
Нифига себе, для меня читабельность Java значительно выше чем у Python-а, а при наличии IDE, которая элементарно позволяет пройти по стеку вызовов и обратно, прямо в тексте, это вообще улет
badger писал(а): Вот это мне и интересно. Насколько бы пострадала производительность. К сожалению, мало что найти можно по этому поводу. Scala практически не используется в широких массах. А уж тем более мало у кого есть время 'развлекаться', дублировать что-то на Scala и сравнивать производительность с Java.
Я почти уже совсем решился писать на Scala, но прагматизм победил :)

badger писал(а):Естественно низкоуровневые языки вроде Java...
Три раза ха-ха, назвать Java низкоуровневым языком могут только скриптоманьяки :)

Re: На чем писать сервер - Java or C/C++

Добавлено: 15 мар 2009, 14:44
badger
Marmot писал(а):Да видел я все это, написаны они, как правило, любителями Python-а. Для меня все эти сравнения выглядят неубедительно, просто абсолютно, разговор идет на детском урoвне типа System.out.println vs print. Это даже не смешно

Судя по моему опыту портирования реальных систем, всё-таки это факт. А я легко работаю и с Java, и с Python.
Marmot писал(а):Нифига себе, для меня читабельность Java значительно выше чем у Python-а, а при наличии IDE, которая элементарно позволяет пройти по стеку вызовов и обратно, прямо в тексте, это вообще улет
Респект Вам. Для меня Python, пожалуй, самый читабельный язык из всех, что я знаю.
Marmot писал(а):Я почти уже совсем решился писать на Scala, но прагматизм победил :)
Согласен.
Marmot писал(а):Три раза ха-ха, назвать Java низкоуровневым языком могут только скриптоманьяки :)
Ну хорошо, самые низкоуровневые -- всяческие ассемблеры. Далее идут C и C++. Несколько лучше Java и C#. Ещё лучше -- Objective Caml и Haskell. Совсем хорошо -- это Python. Шкала спорная. Каждый видит по-своему. Но это моя шкала. Куда засунуть Ruby, не знаю. Если бы не его тяжёлое Perl'овское наследие, поставил бы рядом с Python :alco:

Я, кстати, не скриптоманьяк. Я прекрасно осознаю пределы применимости скриптоязыков. Другое дело, это просто песня, когда есть возможность написать что-то на Python или на Objective Caml.

Re: На чем писать сервер - Java or C/C++

Добавлено: 15 мар 2009, 14:55
badger
Marmot, я не змей и не скриптоманьяк, чесслово. Но если есть возможность писать на чём-то, кроме Java и C++, я с удовольствием это делаю. Разумеется, оставаясь в рамках здорового прагматизма. Я не буду писать числодробильню на чистом Python. Я не буду на Python писать то, что удачнее ложится на многопоточность.

Re: На чем писать сервер - Java or C/C++

Добавлено: 15 мар 2009, 15:04
Marmot
badger писал(а):...это просто песня, когда есть возможность написать что-то на Python или на Objective Caml.
Как я уже говорил, это чисто религизный спор :)
По-моему выбор языка программирования зависит от типа личности.
Мне сейчас проходится писать относительно много кода на JavaScript и это просто мучение какое-то для меня.
Никто мне мои опечатки не подчеркивает красным цветом, какого типа эта переменная, хрен поймешь, вызовы протрейсить в тексте нельзя и т.д. и т.п.
Вся это динамическая гибкость превращается для меня в тихий кошмар... :)
А многим это нравится и они все душой ненавидят статически типизированные языки...

Re: На чем писать сервер - Java or C/C++

Добавлено: 15 мар 2009, 17:03
badger
Marmot писал(а):Как я уже говорил, это чисто религизный спор :)
По-моему выбор языка программирования зависит от типа личности.
Мне сейчас проходится писать относительно много кода на JavaScript и это просто мучение какое-то для меня.
Никто мне мои опечатки не подчеркивает красным цветом, какого типа эта переменная, хрен поймешь, вызовы протрейсить в тексте нельзя и т.д. и т.п.
Вся это динамическая гибкость превращается для меня в тихий кошмар... :)
А многим это нравится и они все душой ненавидят статически типизированные языки...
Да нет же. Я не принадлежу ни к одному лагерю. Не сказать, что меня привлекают исключительно динамические языки, или статически типизированные. И там, и там свои плюсы и минусы. Но мне тяжело было бы писать исключительно на Java. Зачастую меня никто и не спрашивает, да и не безумец я, чтобы плыть против течения. Но когда есть свобода выбора и есть возможность поработать с другими языками, я охотно это делаю.