[флейм] Java - гавно

vijrel7878

не видел не одной нормальной программы на джаве. Вообще не пинимаю, как такая уродская технология могла так широко распространится. Радует только, что скоро она подохнет на windows окончательно и бесповоротно

Marinavo_0507

+1
Хотя говорят, что где-то далеко-далеко, есть такие программы.

voronetskaya

афтар пеши ещо

Ivan826

А вот простите! До .Net java рулила безбожно!

voronetskaya

скоро она подохнет
точно, Java-программисты уже походу все подохли нах, хрен найдешь нормального

Ivan826

А вообще то их и изначально много не было....
Java помрёт не из-за вырождения а из-за .Net Framework которая вобрала в себя всё лучшее что было в Jave и добавила много чего

Julie16

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

ray144

Тебе нужны объяснения, или это просто флуд?

Fragaria

смотри соседний тред, там как раз обсуждается ZDE, написанный на Джаве.

gopnik1994

ru|fv

Papazyan

Да такое говно как .NET сдохнет раньше. Лучшее оно вобрало, как был отстой так и остался отстой.

bastii

Мне тоже C# нравится больше чем Java. Еще что нравится, это то что MS начинает воспитывать своих сотрудников в плане того, как писать вменяемые API.
А Sun просто не справилась с офигительным успехом своей технологии. Вообще очень интерсно узнать, какие были у Sun стратегии на счет Java. Уверен, что Sun задумывала Java совсем не для того, для чего ее сегодня используют. В случае с .NET у MS более четкая стратегия. Когда .NET зачинали было много подразделений, каждая со своим опытом, видением и потребностями в отношении к новой технологии (т.е. .NET). Все это в итоге и сделало .NET такой, какой она является сегодня. Например, если бы Sun делала Java не как платформу одного языка, то вещи типа аннотации (атрибутов в .NET) в ней появились сразу, а не спустя 10 лет. Понятно, что всякие EJB выглядели сегодня куда симпатичнее. Еще жалко, что у Java не было долго конкуренции. Поэтому очень долго проходили пустые заявления, что в том, что Java именно такая, есть глубокий смысл, а если кому что не нравится, значит он ничего не понимает.

Marinavo_0507

> Уверен, что Sun задумывала Java совсем не для того, для чего ее сегодня используют.

А почитать книжки не судьба совсем?
> Например, если бы Sun делала Java не как платформу одного языка
А в .Net - типа разные языки, да?

bastii

типа да

bastii

у них да же есть такие тормоза прогресса как CLS (ничего не говорит? )

gopnik1994

что там байт-кот, что тут...
просто java предъявили такие требования, что кроме самой жавы больше никто не смог удовлетворить.
ДотНЕТ вроде как более демократичен в этом отношении - это модификация существующих языков, а не придумывание нового, как было в случае с жавой.
Собственно ДотНЕТ - это и есть идея Жавы, привитая к Си, Паскалю, Бэйсику проч...

ray144

1. Видимо, Sun хотела не только мобильники.
2. Кроме C# есть ещё C++, VB, J# (уж не знаю, кого он мне напоминает). Вроде есть ещё.

Marinavo_0507

> Кроме C# есть ещё C++, VB, J# (уж не знаю, кого он мне напоминает). Вроде есть ещё.
Только не C++, а Managed C++, и не VB, а VB.Net, да?
Это всё несколько разные синтаксисы для одного языка.
Всякие там SML.Net и прочее - неполноправные языки, не интегрирующиеся с системой типов .Net.
Этак и на JVM есть порты например питона и ещё чего-то, забыл.

Julie16

Эдак можно сказать что gcc C и gcc Pascal - разные синтаксисы для одного языка.

bobby

F#

bastii

Собственно ДотНЕТ - это и есть идея Жавы, привитая к Си, Паскалю, Бэйсику проч...
Не согласен с такой формулировкой. То, что .NET так сильно похож на Java, это просто аргумент в пользу Java. Просто, если кто-то захотел сделать среду для определенных целей, перебрал всякие варианты, и как ни странно, большиство оптимальных решений совпали с теми, что применены в Java. Ура, все таки грамотные мужики сделали Java.

Marinavo_0507

Кое-кто так и говорит.
Вполне возможно, что и я так скажу, если изучу вопрос - довольно слабо представляю себе возможности GNU Pascal.
Вот GNU C и GNU C++ - разные языки, у второго расширена система типов, и информация о типах кодируется в объектных файлах.
C++ - библиотеку не вот-то используешь в C-программе.
AFAIK в Managed С++ убраны возможности, которых нет в C#.

Marinavo_0507

Он же SML.Net, про него - выше, за подробностями - в поиск.

nattana

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

Julie16

у второго расширена система типов
А можно поподробнее?
C++ - библиотеку не вот-то используешь в C-программе
Ну а это вообще ерунда какая-то. Есть такая штука как sip.

bastii

Но разница есть. JVM разрабатывалась с расчетом только на Java, CLR с расчетом на то, чтобы хостить разные языки. Это объясняет много явлений в .NET типа & в идентификаторах в C#.
Кроме MC++ СLR может хостить и С++ (не знал?)

bobby

а чо, он правда не интегрируется с системой типов .Net?
тут вроде написано, что все заебись
http://research.microsoft.com/projects/ilx/fsharp.aspx

Marinavo_0507

я ж говорю - в поиск

bastii

так F# другое

gopnik1994

Если ты напишешь байт-код по стандартам жавы, скомпиленный из любого другого языка, то подключишь его к жаве в полпинка. Даже прогу перезапускать не придется
Другой вопрос, что адаптировать что-то кроме самой жавы к ее станадртам - нереально. Слишком далеко жава шагнула вперед своего времени. .НЕТ - есть компромис, который так понравился большому кол-ву программистов. Изучив дотНЕТ и не изучив жаву, утверждать, что жава отстой по сравнению с дотнетом, как минимум неразумно.
Утверждение, что на жаве мало написано - это аргумент примерно их той же оперы, что и "Русский язык отстой, потому что на нем разговаривает всего-то около 150млн человек, а вот английский, да китайский и индийским - это рулез, 4 миллиарда на них говорят"...
Просто большинство программистов, уяснив с программистких пеленок, что Си - рулез, продолжают на нем сидеть, во что бы то не стало. И начали изучать что-то другое только когда это другое адаптировали под их любимый стандарт. И вот когда появился порт жавы для Си - вот тогда все и сказали, какой этот порт крутой, а вот жаву "не читали, но решительно осуждаем"...

Julie16

Да, такого даже я от себя не ожидал

//qw1.h
class A
{
public:
A throw ;
virtual ~A throw ;
int method1 throw ;
virtual int method2 throw ;

private:
int a;
};


//qw1.cpp
#include "qw1.h"

A::A throw
{
a = 10;
}

A::~A throw
{
}

int A::method1 throw
{
return a;
}

int A::method2 throw
{
return 2;
}


//qw.c
typedef struct
{
void* vtable;
int a;
} A;

extern void _ZN1AC2Ev( A* a );
extern int _ZN1A7method1Ev( A* a );
extern int _ZN1A7method2Ev( A* a );

int main
{
A a;
_ZN1AC2Ev( &a );

printf( "%d\n", _ZN1A7method1Ev( &a ) );
printf( "%d\n", _ZN1A7method2Ev( &a ) );
}

sergei1969

Net сделана на 10 лет позже с учётом опыта Java и того, чего ей не хватает
НО! На Java просто дохрена готового кода и реальная кроссплатформенность, причём это немаленький список платформ, до которого .Net не скоро дорастёт, если ваще дорастёт
Имхо для разработки с нуля (и под Win) .Net лучше, но большая вероятность, что на Java это можно писать не с нуля.
Через некоторое время думаю ситуация изменится в сторону .Net, но многое ещё зависит от Mono и т.п.

Marinavo_0507

Вот, фактически ты вынужден делать часть работы компилятора руками.
Добавь в свой код множественное наследование, исключения и шаблоны - эта часть сильно увеличится.
В частности, один объект на С++ перейдёт в несколько указателей на С, один шаблон - в несколько объявлений и т.д.
Языки потому и разные, что перевод из одного в другой нетривиален - перевод даже не кода, а только интерфейсов.
В случае же .Net-языков, каждая сущность какого-либо языка соответствует ровно одной сущности C#, если мне правильно доложили.
На остальное отвечу позже, когда до инета дойду.

Marinavo_0507

> Другой вопрос, что адаптировать что-то кроме самой жавы к ее станадртам - нереально.
Разве с Питоном были проблемы, кроме производительности?
Вроде бы нет, дойду до инета - поищу.

gopnik1994

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

Marinavo_0507

А какие проблемы с паскалем и бейсиком?
С Си - понятно, там арифметика указателей.

rosali

Клевая у тебя С++ библиотека, везде throw написано. Самому то не смешно? Если человек решил написать Си библиотеку, он на Си и пишет, а если он пишет С++ библиотеку, то там будут и шаблоны и исключения...
Ну да, тебе уже сказали, только сейчас прочитал...

Julie16

И то, и другое - не проблема. В gcc можно самому задать процедуру обработки исключений. Есть даже такой интересный проект - с++ + linux kernel.

Dasar

> AFAIK в Managed С++ убраны возможности, которых нет в C#.
Скорее, наоборот.
В MC++ возможностей больше, чем в C#.
MC++ более низкоуровневый, в нем меньше syntactic-sugar, он менее наглядный, но возможностей в нем больше.
В том числе, оставлены чисто плюсовые фишки - например, template-ы (изменение кода на уровне компиляции).

Marinavo_0507

> В том числе, оставлены чисто плюсовые фишки - например, template-ы (изменение кода на уровне компиляции).
В C# такого нет? А как же вы живёте

bastii

Все как раз наоборот. В C# v1.0 как раз syntactic-sugar очень мало, это была одна из основных установок. В C# конечно появляются всякие навороты типа итераторов и анонимных методов.
С++ как раз язык, где компилятор с большими наворотами. В VC++ 2005 они пытаются опимизировать IL, а в C# пока не собираются.

Dasar

> В C# такого нет? А как же вы живёте
в C# - есть generics-и, а в MC++ и generics и template-ы.
ps
в Java-е generic-иков тоже долгое время не было (может и до сих пор нет пока .net не стал наступать на пятки.

voronetskaya

ps
в Java-е generic-иков тоже долгое время не было, пока .net не стал наступать на пятки
у меня ощущение что все эти генерики в 5 jdk сделаны тока для того, чтобы сишарперы не могли пищать, что у них это есть, а у джавистов нету. типа маркетинг такой хитрый, не больше. ну вот как-то не заметно массового перехода на 1.5

Dasar

> ну вот как-то не заметно массового перехода на 1.5
Это плюс для джавы?

voronetskaya

судя по сабжу мы тут не плюсы обсуждаем

ray144

Ну здрасьте. Давайте я - дилетант - объясню, зачем generics в Java. Чтобы не было лишних downcast-ов и соответствующих ошибок во время выполнения. Чтоб компилятор пас типы, а не JVM.
Переходить под дулом автомата на Java 5 никто не заставляет.

Marinavo_0507

Походу, MC++ более мощный язык, чем допускают средства интероперабельности .Net.
То есть, библиотеку шаблонов уже непросто использовать из других языков, так?
Аналогично, я не нашёл по приведённым ссылкам ничего про поддержку функторов в F#.
Tuples тоже "забыли" добавить в систему типов .Net, так что
и с простыми функциями всё не так хорошо.

Marinavo_0507

> в Java-е generic-иков тоже долгое время не было
Ну и очень ху№во было.
Мата производилось больше, чем кода - это с учётом того, что в Java нужно всё писать по 2--3 раза.

ray144

> в Java нужно всё писать по 2--3 раза.
Это как это?
public public public static static static void void main main......
Так, что ли?
Это при том, что уже в Borland C++ было 3 типа char: char, signed char, unsigned char.
Интересно, в 98-м году это исправили или "маразм крепчал"?

rosali

3 типа char: char, signed char, unsigned char
Это в любом С++

Marinavo_0507

MyCoolClass x = new MyCoolClass;
это два раза
три раза - если ещё приходится приведение типов юзать из-за отсутствия generics

Dasar

> про поддержку функторов в F#.
Чем функтор отличается от делегата?

bastii

На 5ю не переходят, многие не видят большого смысла. Под Джаву приходится писать очень много кода, и как разница если с генериками можно будет чуть меньше.

ray144

Ха! А C++ ты ещё * после первого MyCoolClass поставишь, а потом ещё напишешь delete MyCoolClass.

6yrop

часто это выглядит так
IMyCool x = new MyCool;

rosali

C++ ты ещё * после первого MyCoolClass поставишь
 MyCoolClass x; 

Marinavo_0507

> А C++ ты ещё * после первого MyCoolClass поставишь
А вот и не поставлю, так как не пишу на плюсах.
А в правильных языках есть type inference.
> delete MyCoolClass
Неа, скорее delete x.
Но чаще всего будет
MyCoolClass x;
, и без всякого delete, если я правильно припоминаю зачатки знания C++.

ray144

Такой объект не протянет и до второй } . Для простеньких программулин это клёво. А как быть с более-менее сложными проектами, где пасётся целое стадо объектов, и непонятно, кто и когда должен их удалять.

6yrop

имхо, важнее не сколько писать (хорошие среды помогут а как легко читать
отсюда
MyCoolClass x;
не видно, что вызывается конструктор

rosali


не видно, что вызывается конструктор
И слава богу. Зачем об этом думать, когда читаешь эту строчку?

rosali

так как не пишу на плюсах

MyCoolClass x;
Надо же и впрямь не программируешь Это forward declaration функции с именем x без аргументов возвращающей MyCoolClass

Marinavo_0507

Why don't you implement functors?
Modern variations of the ML module system offer a number of interesting features: structural subtyping for "pacakged values" (modules a form of existential types; and the ability to parameterize modules by values, abstract types, abstract type functions, exception constructors and concrete data types. All to these features are interesting, though in practivce people tend to use functors for very limited purposes such as to instantiate basic data structures such as Sets, Maps and Hash tables.
F# does not currently support a full Standard ML or OCaml-style module system. However, records are in many ways a feasible substitute for modules - for example F# supports Set, Map and Hashtbl components implemented as records.
Мда, ML без функторов. Кастрировали!
А что такое делегаты, где проще всего написано?

voronetskaya

важнее не сколько писать (хорошие среды помогут а как легко читать
респект!

6yrop

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

Dasar

> А что такое делегаты, где проще всего написано?
например, здесь:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vcrefthedelegatetype.asp

Marinavo_0507

Похоже, делегаты - это аналоги функциональных типов в MLях.

Hastya

Автор, как ты прав!
Java - говно.
C# - говно.
А настоящий ОО язык был только один - Smalltalk.
Даешь переход на Smalltalk!

Dasar

В чем кардинальное отличие функтора от функциональных типов?

bastii

Ok. Java - гавно, C# - гавно. Но последний хоть активно развивают.

Julie16

По-моему даже в паскале это есть.

Marinavo_0507

A functor is an ML program module takes the signature of another module as an argument. The functor can then be applied to any module matching that signature. This facility is like the template of C++ or the generic of Ada or Modula-3, but in ML the functor can be completely type-checked and compiled to machine code before it is applied to its argument(s); this leads to better program modularity.

Marinavo_0507

Ботай про closures.
Делегаты - походу усечённые closures.

Julie16

Я про них и говорил.

Marinavo_0507

В паскале ничего похожего нет (не уверен про delphi но и там вряд ли).

Dasar

Получается, что Functor - это delegate + generic, соответственно, в C# 2.0 - оно есть.

Julie16

В borland pascal нечто подобное было. Я даже пользовал.

Julie16

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

Marinavo_0507

> Там можно объявить локальную процедуру(внутри другой процедуры которая помнит более высокий контекст.
Это и в GNU C можно.
Но только когда тот более высокий контекст уничтожается, имеем висячие ссылки.
Closures + lexical scoping требуют garbage collection.

Marinavo_0507

'like' != 'equal' , так что ждём настоящего *ML под .Net.
Ещё, они пишут, что за образец взяли скорее OCaml, нежели SML.
Но при этом отказались от его ОО-системы.
Наверное, она тоже не укладывается в .Net.

bastii

пора создавать тред "Флейм про ЯП"

rosali

ну как, строчка выполняет действия, а ты считаешь об этом не нужно думать?
А что вот строчка
new int[10];
выполняет аллокацию памяти. А знаешь какой это сложный процесс, там chunk-и какие-то надо проверить блаблабла и что об этом _надо_ думать?

Marinavo_0507

В некоторых случаях об этом надо думать.

Marinavo_0507

http://www.robert-tolksdorf.de/vmlanguages.html
Внушительный список языков, разработанных/спортированных под JVM.

shlyumper

Внушительный список языков, разработанных/спортированных под JVM.
Вопрос скорее не во внушительности списка, а в работоспособности его компонентов. Просмотрел бегло. С некоторыми представителями приходилось сталкиваться. Весьма убого.
Кроме того, 50% списка - интерпретаторы языков, написанные на Java. Не думаю, что они имеют право зваться "разарботанные/спроектированные под JVM".

Marinavo_0507

> С некоторыми представителями приходилось сталкиваться. Весьма убого.
Ну а некоторые вроде нормальные.
ML без модулей и функторов - тоже убого.

shlyumper

> ML без модулей и функторов - тоже убого.
Ну кто ж спорит
Речь скорее о том, что широкоуниверсальныемегасовместимые виртуальные машины убоги по своей сути, т.к. напоминают сферическую лошадь в вакууме. Слишком уж многие вещи нужно абстрагировать, чтобы сделать действительно универсальную виртуальную машину. Лучшее что можно получить - не слишком универсальную виртуальную машину, ориентированную под ту или иную концепцию, что и получаем в лице что дотнета, что жавы, которые не очень хорошо стыкуются со всем, что далеко отходит от процедурно-ооп ориентированных языков.

Ivan8209

В приличных языках последним занимается сборщик мусора.
---
...Я работаю антинаучным аферистом...

lebed853

+1

Dasar

> В приличных языках последним занимается сборщик мусора.
У сборщика мусора тоже есть ограничения, например, сборщик мусора не гарантирует порядок удаления объектов.

Ivan8209

Порядок удаления мусора --- безразличен.
---
...Я работаю антинаучным аферистом...

Dasar

Объект(сущность который больше не нужен, и мусор - это не одно и тоже.

enochka1145

> В приличных языках последним занимается сборщик мусора.
Да шо ви говорите...
(Читать умеешь? Название треда читал?)

Ivan8209

А зачем хранить ненужное?
Не нужно --- не храни.
---
...Я работаю антинаучным аферистом...

Dasar

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

Ivan8209

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

Marinavo_0507

> Название треда читал?
If Java had a real garbage collector, most programs would just delete themselves on startup (c) не помню
На практике проверено - так и есть.

voronetskaya


супер! а почему гугл афтора не нашел?

Marinavo_0507

спасибо, а то я тоже не смог найти оригинал

Lorin

+1
ф тысяче и ниибёт!

bleyman

Да ладно вам. Я вчера видел как дотнетфреймворк выкидывал OutOfMemoryException раньше чем успевал запустить ГЦ. Типа 400 метров свободны, прога их постепенно зажирает, хуяк, ексепшен. Ставим в кадой итерации ГЦ.Коллект - всё нормально. Было забавно.

RTYuPZ78


не видел не одной нормальной программы на джаве. Вообще не пинимаю, как такая уродская технология могла так широко распространится. Радует только, что скоро она подохнет на windows окончательно и бесповоротно
Не позорьтесь из-за своего невежества.
SAP NetWeaver, например, на J2EE .
Что такое SAP объяснять?
Дойч Банк - работа с ценными бумагами - на J2EE
Впрочем, вы могли видеть тока проги на перле каком-нибудь, да на голом C, наверное.

RTYuPZ78

язык программировнаия сам по себе никакой ценности не представляет
Ценна платформа
J2EE - мэйнстрим. Все корпоративные системы (это круче, чем программа типа ICQ или др. дешевка) пишутся сейчас на J2EE и .NET (некоторые ведутся на проприетарность от микрософта)

bastii

Это конечно да, когда пишешь что-то большое, то важно чтобы можно было максимально воспользоваться готовой инфраструктурой. Только ведь все равного много кода писать придется. А на этот процесс язык оказывает ощутимое влияние. Вот увидишь когда в EJB3.0 начнут юзать всякие аннотации и т.д.

RTYuPZ78


большую часть того что будет введено в EJB 3.0 для CMP бинов можно реализовать какими-нибудь визардами в том же JBuilder-е.
Уже давно никто не пишет ручками ejb-jar.xml и др.
Так зачем из-за какого-то стандарта менять язык?
Что-то необходимое - да. А из-за чего попало - не такие глупые в JAVA community
проблемы EJB 2.1 - это не проблемы самого языка

bastii

Про кодогенерацию и визарды я уже вроде писал. Плохое решение. У MS больше преимущество -- они сегодня разрабатывают свои API. Просто кто-то верит, что если очень постараться и сделать грамотный API, то можно будет меньше обходится визардами и кодогенерацией (посмотрим, как это у них получится). У Java сегодня вообще возможности что-либо метять мало. Иначе пропадет все преимущество в виде существующих наработок. Если вернутся к разработке хорошого API, то уже становится не безразлично каким кол-вом абстрацкий можно манипулировать. Понятно, все эти абстракции мало полезны, если их не поддерживает язык. А язык у Java -- не самое сильное место. Вернулись к тому, с чего начали Java - говно.

voronetskaya

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

bastii

С нуля и создавая новую платформу.

WATHTOWER

ЯВА УНЫЛОЕ ГОВНО, НАСТОЛЬКО УНЫЛОЕ, ЧТО БОЛЕЕ УНЫЛОГО НЕ БЫВАЕТ, В ЯЗЫКЕ НЕТ НИЧЕГО, НИКАКИХ КОНСТРУКЦИЙ, ЗАТО ТОННЫ ГОВНА ТЯНУТСЯ ИЗ ЯВЫ И ЕЕ БИБЛИОТЕК КО ВСЕМ ОСТАЛЬНЫМ ЯЗЫКАМ. ТАКОЙ КИЗЯКОВО-ГЛИНЯНЫЙ КОЛОС, НАСПЕХ СВАЯННЫЙ, БЕЗ СТАНДАРТОВ, БЕЗ НИЧЕГО. ЧТО ЯВА ДАЛА МИРУ - НИЧЕГО, ТОННЫ ГОВНА, С ЧЕМ СРАВНИТЬ-ТО Я НЕ ЗНАЮ, С СИ ДАЖЕ ЯЗЫК НЕ ПОВОРАЧИВАТСЯ ТАКОЕ ЧУДО СРАВНИВАТЬ - ГНИЛОЙ БЕЙСИК-ИНТЕРПЕРДАТОР

Смегмолит

Блядь, да азебала эта хуява поёбленая в пизду и в клитор одновременно со смегмой вместо смазки
Оставить комментарий
Имя или ник:
Комментарий: