Java vs. C#
От: Pavel Dvorkin Россия  
Дата: 18.01.12 16:47
Оценка:
То, что C# вышел из Java — несомненно.
То, что дальше они развивались в одном и том же направлении до поры до времени — тоже. И дженерики, и аннотации (атрибуты) появились и там и здесь (пусть и есть отличия в деталях). Кто ввел раньше, кто позже — не в этом суть.

А вот дальше — стоп. C# полез в ФП, а Java — нет.

Почему ?

Основная ниша-то у них общая есть — серверное программирование. Пусть есть и другие ниши, но их роль все равно меньше.
With best regards
Pavel Dvorkin
Re: Java vs. C#
От: Jack128  
Дата: 18.01.12 17:25
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>То, что C# вышел из Java — несомненно.

PD>То, что дальше они развивались в одном и том же направлении до поры до времени — тоже. И дженерики, и аннотации (атрибуты) появились и там и здесь (пусть и есть отличия в деталях). Кто ввел раньше, кто позже — не в этом суть.

PD>А вот дальше — стоп. C# полез в ФП, а Java — нет.


PD>Почему ?


В C# из ФП только замыкания.
Ну и LINQ aka сахар для монад, которыми(монадами) мало кто пользуется.

Ну на счет линка глухо, но замыкания в Java вроде собираются вводить. Так что отличие только в том, что шарп быстрее развивается, а Sun/Oracle тормозит.
Re: Java vs. C#
От: Skynin Украина skynin.blogspot.com
Дата: 18.01.12 17:30
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Основная ниша-то у них общая есть — серверное программирование.

Вообще-то оно на Java и .NET весьма по разное в подходах.
На Java и сами сервера приложений и пр написаны, а вот на C# дописывается нечто к функциональности нативных серверов.

PD> C# полез в ФП, а Java — нет. Почему ?

Потому что Java достигла успеха без ФП. И за счет — простоты (до убогости), и жесточайшим самоограничениям ради совместимости бинарного кода.
Не нужно короче ФП в Jave, вот его и нет там. Кому нужно — пользуют Scala, или Clojure какой.

ФП конечно модная тема для обсуждения на форумах. В самом деле, сколько можно работу то обсуждать, давайте ж наконец "о женщинах"
Re: Java vs. C#
От: silverwolf  
Дата: 18.01.12 18:37
Оценка: +1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>А вот дальше — стоп. C# полез в ФП, а Java — нет.

Тут скорее не "полез в ФП", а "добавили модных фишечек" (типа маркетинг).
PD>Почему ?
PD>Основная ниша-то у них общая есть — серверное программирование. Пусть есть и другие ниши, но их роль все равно меньше.
ИМХО, тут играет роль ни столько ниша как серверное/клиентское ПО, сколько степень "энтерпрайзности". Java -- это во многом большие энтерпрайзы (как правило очень консервативные, есть проекты еще на 1.4 ), при том они не всегда используют Сановскую (Оракловую) джаву, часто это Websphere с ИБМовской джавой. И тут важна поддержка разных ВМов: нельзя просто добавить фичу и сказать что те кто пользуются ИБМовской джавой идут лесом. У C# такой проблемы нет, он по факту разрабатывается одной конторой и МСу нет необходимости согласовывать реализации с другими вендорами.
Плавно переходим к следующему пункту. Спецификации Java разрабатывает так же сообщество, а C# -- та же одна компания что и делает реализацию. Такой расклад существенно тормозит скорость развития (Когда начали в джаве говорить про "лямбды"?).
Re: Java vs. C#
От: GarryIV  
Дата: 18.01.12 19:54
Оценка: +1 :))
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>То, что C# вышел из Java — несомненно.

PD>То, что дальше они развивались в одном и том же направлении до поры до времени — тоже. И дженерики, и аннотации (атрибуты) появились и там и здесь (пусть и есть отличия в деталях). Кто ввел раньше, кто позже — не в этом суть.

PD>А вот дальше — стоп. C# полез в ФП, а Java — нет.


PD>Почему ?


Java тоже лезет в ФП но меееедленно.
WBR, Igor Evgrafov
Re: Java vs. C#
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 19.01.12 05:50
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>А вот дальше — стоп. C# полез в ФП, а Java — нет.


PD>Почему ?


На Яве написано больше, так просто совместимость не сломать.

[off]
А вот свежий пример переписывания с C# на Java.
[/off]
Re[2]: Java vs. C#
От: Wolverrum Ниоткуда  
Дата: 19.01.12 08:30
Оценка:
Здравствуйте, Nuzhny, Вы писали:

PD>>Почему ?

N>На Яве написано больше, так просто совместимость не сломать.
Пример Python и Perl как бы говорит нам, что "сколько бы ни было написано, а совместимость ломать можно и нужно".


[off]
N>А вот свежий пример переписывания с C# на Java.
О, благородный дон пытается толсто троллить Любой имеющий мозг да прочтет, что приина переписывания продукта — покупка конмании, а не что-либо иное
[/off]
Re[2]: Java vs. C#
От: Wolverrum Ниоткуда  
Дата: 19.01.12 08:32
Оценка: +1
PD>>Почему ?
N>На Яве написано больше, так просто совместимость не сломать.
Пример Python и Perl как бы говорит нам, что "сколько бы ни было написано, а совместимость ломать можно и нужно".


[off]
N>А вот свежий пример переписывания с C# на Java.
О, благородный дон пытается толсто троллить Любой имеющий мозг да прочтет, что причина переписывания продукта — покупка разработчика, а не что-либо иное
[/off]
Re[3]: Java vs. C#
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 19.01.12 08:45
Оценка:
Здравствуйте, Wolverrum, Вы писали:

N>>На Яве написано больше, так просто совместимость не сломать.

W>Пример Python и Perl как бы говорит нам, что "сколько бы ни было написано, а совместимость ломать можно и нужно".

"Пример Python и Perl как бы говорит нам", что на них написано кода гораздо меньше.


N>>А вот свежий пример переписывания с C# на Java.

W>О, благородный дон пытается толсто троллить Любой имеющий мозг да прочтет, что приина переписывания продукта — покупка конмании, а не что-либо иное

Я не пытаюсь, а привёл только голый факт без высказывания своего мнения о нём. Факты не могут троллить, они просто существуют. И, кстати, ничего не говорил о причине переписывания. Любой имеющий мозг это бы уловил.
Re[3]: Java vs. C#
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 19.01.12 08:48
Оценка:
Здравствуйте, Wolverrum, Вы писали:

N>>На Яве написано больше, так просто совместимость не сломать.

W>Пример Python и Perl как бы говорит нам, что "сколько бы ни было написано, а совместимость ломать можно и нужно".

Кстати! Пример Python ещё показывает, что многим не понравилась ломка совместимости при переходе на третью версию.
А пример С++ показывает, что совместимость с С была важным фактором в широком распространении языка.
Re[2]: Java vs. C#
От: hardcase Пират http://nemerle.org
Дата: 19.01.12 08:53
Оценка: +2
Здравствуйте, silverwolf, Вы писали:

S>И тут важна поддержка разных ВМов: нельзя просто добавить фичу и сказать что те кто пользуются ИБМовской джавой идут лесом.


Незачем сюда VM приплетать. Речь идет о фичах языка. LINQ появился в C#3 и никак не повлиял на бинарную совместимость кода — .NET 3.5 оставался надстройкой над .NET 2.0. Все необходимое язык Java имеет уже сейчас — от анонимных классов до замыканий ровно один шаг, и поддержка рантайма тут не нужна, реализация генераторов (yield-ов) также не составляет труда и опять же не требует поддержки рантайма.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: Java vs. C#
От: silverwolf  
Дата: 19.01.12 16:00
Оценка:
Здравствуйте, hardcase, Вы писали:

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


S>>И тут важна поддержка разных ВМов: нельзя просто добавить фичу и сказать что те кто пользуются ИБМовской джавой идут лесом.


H>Незачем сюда VM приплетать. Речь идет о фичах языка. LINQ появился в C#3 и никак не повлиял на бинарную совместимость кода — .NET 3.5 оставался надстройкой над .NET 2.0. Все необходимое язык Java имеет уже сейчас — от анонимных классов до замыканий ровно один шаг, и поддержка рантайма тут не нужна, реализация генераторов (yield-ов) также не составляет труда и опять же не требует поддержки рантайма.

Не совсем. Существуют способы реализовать эти фичи без переделки генерируемого кода и ВМа. Но не факт что эти способы наиболее подходящие.
Второй момент:
S>>Спецификации Java разрабатывает так же сообщество, а C# -- та же одна компания что и делает реализацию.
Тех же замыканий было несколько вариантов синтаксиса.
Re: Java vs. C#
От: alex_public  
Дата: 20.01.12 04:28
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:


PD>А вот дальше — стоп. C# полез в ФП, а Java — нет.


PD>Почему ?


Для ФП есть соответственно Scala и F#. А то что говорите вы — это скорее мелкие добавки синтаксического сахара в языки. Происходит это везде, даже в таких фундаментальных языках как C++, но везде с разной скоростью. В C# обновления идут пожалуй быстрее всех, вполне понятно почему.

PD>Основная ниша-то у них общая есть — серверное программирование. Пусть есть и другие ниши, но их роль все равно меньше.


Смотря что вы имеете в виду под серверным программированием. Если включаете сюда миллионы тупых формочек клиентского софта из клиент-серверных корпоративных приложений, то тогда это высказывание ещё может быть похожим на правду.
Re[3]: Java vs. C#
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 20.01.12 05:14
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Незачем сюда VM приплетать. Речь идет о фичах языка. LINQ появился в C#3 и никак не повлиял на бинарную совместимость кода — .NET 3.5 оставался надстройкой над .NET 2.0. Все необходимое язык Java имеет уже сейчас — от анонимных классов до замыканий ровно один шаг, и поддержка рантайма тут не нужна, реализация генераторов (yield-ов) также не составляет труда и опять же не требует поддержки рантайма.


Да сколько можно повторять! Замыкания в Java есть! Чего в Java нет, так это лямбд. Кстати, обещают в Java 8
Re[4]: Java vs. C#
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 20.01.12 05:16
Оценка:
Здравствуйте, silverwolf, Вы писали:

S>Не совсем. Существуют способы реализовать эти фичи без переделки генерируемого кода и ВМа. Но не факт что эти способы наиболее подходящие.


И какие же способы существуют с переделкой VM'а? Вот почему инженеры MS выбрали способы без переделки? И почему все эти фичи прекрасно реализованы в Scala, которая работает на той же VM?
Re[5]: Java vs. C#
От: silverwolf  
Дата: 20.01.12 10:06
Оценка: :)
Здравствуйте, konsoletyper, Вы писали:

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


S>>Не совсем. Существуют способы реализовать эти фичи без переделки генерируемого кода и ВМа. Но не факт что эти способы наиболее подходящие.


K>И какие же способы существуют с переделкой VM'а?

Вроде, предлагали переделать поддержу методов как объектов на уровне ВМа.
K>И почему все эти фичи прекрасно реализованы в Scala, которая работает на той же VM?
Прекрасный пример. А теперь вспомните про скорость компиляции Scala. И про скорость генерируемого кода, многие сталкиваются с проблемой: если активно использовать фичи скалы все тормозит, но если писать на "джава с синтаксисом скалы" то все ок.
Вопрос: Кому такое счастье надо?
Re[3]: Java vs. C#
От: alexeiz  
Дата: 21.01.12 07:59
Оценка:
Wolverrum said:

> Пример Python и Perl как бы говорит нам, что "сколько бы ни было

> написано, а совместимость ломать можно и нужно".

Пример Python и Perl как бы говорит нам совсем обратное.

Python 3.0, который по большому счету немного несовместим с 2.6, вышел
в 2008 году. 4 года спустя многие библиотеки еще не портировали на
Python 3. Поэтому продолжает развиваться ветка Python 2.

С перлом таже история. Perl 6 — сломали совместимость (вообще,
положили на совместимость с прибором). Можно смело сказать, что
огромное количество кода библиотек Perl 5 никто никогда не будет
переписывать на Perl 6. Следовательно, продолжают пилить (и очень
активно) Perl 5.
Posted via RSDN NNTP Server 2.1 beta
Re[6]: Java vs. C#
От: hardcase Пират http://nemerle.org
Дата: 21.01.12 08:04
Оценка:
Здравствуйте, silverwolf, Вы писали:

K>>И почему все эти фичи прекрасно реализованы в Scala, которая работает на той же VM?

S>Прекрасный пример. А теперь вспомните про скорость компиляции Scala. И про скорость генерируемого кода, многие сталкиваются с проблемой: если активно использовать фичи скалы все тормозит, но если писать на "джава с синтаксисом скалы" то все ок.
S>Вопрос: Кому такое счастье надо?

Я правильно понял что это именно лямбды с замыканиями замедляют компиялицю в Scala и именно лямбды с замыканиями так сильно сказываются на производительности?
Можно личный вопрос — вы хоть раз пользовались этими фичами на практике в любом другом языке?
/* иЗвиНите зА неРовнЫй поЧерК */
Re[7]: Java vs. C#
От: silverwolf  
Дата: 21.01.12 12:57
Оценка:
Здравствуйте, hardcase, Вы писали:

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


K>>>И почему все эти фичи прекрасно реализованы в Scala, которая работает на той же VM?

S>>Прекрасный пример. А теперь вспомните про скорость компиляции Scala. И про скорость генерируемого кода, многие сталкиваются с проблемой: если активно использовать фичи скалы все тормозит, но если писать на "джава с синтаксисом скалы" то все ок.
S>>Вопрос: Кому такое счастье надо?

H>Я правильно понял что это именно лямбды с замыканиями замедляют компиялицю в Scala и именно лямбды с замыканиями так сильно сказываются на производительности?

Нет, это всего лишь один из факторов. Кроме того Scala, как раз, хорошо демонстрирует тот подход о котором говорил konsoletyper, то есть преобразование "синтаксического сахара" в уже существующие конструкции, например SMI.
Само по себе такое преобразование занимает время и в некоторых случаях может занимать много времени, а одно из преимуществ javac — это его скорость и то что он не занимается оптимизациями.
На скорость выполняемого кода скорее влияет не сам факт генерации доп кода, а то что довольно сложные структуры (создание промежуточных классов, например) скрыты от программиста. Таким образом увеличивается вероятность ошибки в плане производительность, типа: "я ж ничего такого не написал, откуда тут 100500 вложенных вызовов".
H>Можно личный вопрос — вы хоть раз пользовались этими фичами на практике в любом другом языке?
Вы про замыкания и лямбды? Если да, то да Java (насколько это возможно), javascript (без этого там сложно), по мелочи (у меня нет большого опыта в последующих языках) в ruby, groovy, scala.
Re[7]: Java vs. C#
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 21.01.12 13:52
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Я правильно понял что это именно лямбды с замыканиями замедляют компиялицю в Scala и именно лямбды с замыканиями так сильно сказываются на производительности?


Нет, неправильно. В скале куча разных фич, которые могут сказаться на производительности. И лямбда — это совсем-совсем простой случай. Там, например, очень много фич в системе типов, которые явно выливаются в чёрти какое нагромождение классов.

H>Можно личный вопрос — вы хоть раз пользовались этими фичами на практике в любом другом языке?


Да постоянно. В Java. Только в случае Java — не анонимными функциями с замыканиями, а анонимными классами с замыканиями. Ну а по-другому — это явно написать именованный класс и передать ему в конструкторе параметры. Ну да, создание объекта и инициализация его полей — это накладные расходы. А по-другому — никак.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.