[флейм] Java - гавно
Хотя говорят, что где-то далеко-далеко, есть такие программы.
![](/images/graemlins/lol.gif)
![](/images/graemlins/lol.gif)
![](/images/graemlins/lol.gif)
![](/images/graemlins/lol.gif)
А вот простите! До .Net java рулила безбожно!
скоро она подохнетточно, Java-программисты уже походу все подохли нах, хрен найдешь нормального
![](/images/smilemix/mix1056.gif)
![](/images/smilemix/mix1056.gif)
Java помрёт не из-за вырождения а из-за .Net Framework которая вобрала в себя всё лучшее что было в Jave и добавила много чего
А что в этой технологии такого уродского, позвольте поинтересоваться? Мне вот жаба не нравится. Но я не говорю что это уродская технология. Можете ли Вы привести пример своего кода(или даже своей технологии чтобы мы могли посмотреть на него и понять, имеете ли Вы моральное право называть эту технологию уродской?
Тебе нужны объяснения, или это просто флуд?
смотри соседний тред, там как раз обсуждается ZDE, написанный на Джаве.
ru|fv
Да такое говно как .NET сдохнет раньше. Лучшее оно вобрало, как был отстой так и остался отстой.
А Sun просто не справилась с офигительным успехом своей технологии. Вообще очень интерсно узнать, какие были у Sun стратегии на счет Java. Уверен, что Sun задумывала Java совсем не для того, для чего ее сегодня используют. В случае с .NET у MS более четкая стратегия. Когда .NET зачинали было много подразделений, каждая со своим опытом, видением и потребностями в отношении к новой технологии (т.е. .NET). Все это в итоге и сделало .NET такой, какой она является сегодня. Например, если бы Sun делала Java не как платформу одного языка, то вещи типа аннотации (атрибутов в .NET) в ней появились сразу, а не спустя 10 лет. Понятно, что всякие EJB выглядели сегодня куда симпатичнее. Еще жалко, что у Java не было долго конкуренции. Поэтому очень долго проходили пустые заявления, что в том, что Java именно такая, есть глубокий смысл, а если кому что не нравится, значит он ничего не понимает.
![](/images/graemlins/lol.gif)
А почитать книжки не судьба совсем?
> Например, если бы Sun делала Java не как платформу одного языка
А в .Net - типа разные языки, да?
типа да
![](/images/graemlins/smile.gif)
просто java предъявили такие требования, что кроме самой жавы больше никто не смог удовлетворить.
ДотНЕТ вроде как более демократичен в этом отношении - это модификация существующих языков, а не придумывание нового, как было в случае с жавой.
Собственно ДотНЕТ - это и есть идея Жавы, привитая к Си, Паскалю, Бэйсику проч...
2. Кроме C# есть ещё C++, VB, J# (уж не знаю, кого он мне напоминает). Вроде есть ещё.
Только не C++, а Managed C++, и не VB, а VB.Net, да?
Это всё несколько разные синтаксисы для одного языка.
Всякие там SML.Net и прочее - неполноправные языки, не интегрирующиеся с системой типов .Net.
Этак и на JVM есть порты например питона и ещё чего-то, забыл.
![](/images/graemlins/confused.gif)
F#
Собственно ДотНЕТ - это и есть идея Жавы, привитая к Си, Паскалю, Бэйсику проч...Не согласен с такой формулировкой. То, что .NET так сильно похож на Java, это просто аргумент в пользу Java. Просто, если кто-то захотел сделать среду для определенных целей, перебрал всякие варианты, и как ни странно, большиство оптимальных решений совпали с теми, что применены в Java. Ура, все таки грамотные мужики сделали Java.
Вполне возможно, что и я так скажу, если изучу вопрос - довольно слабо представляю себе возможности GNU Pascal.
Вот GNU C и GNU C++ - разные языки, у второго расширена система типов, и информация о типах кодируется в объектных файлах.
C++ - библиотеку не вот-то используешь в C-программе.
AFAIK в Managed С++ убраны возможности, которых нет в C#.
Он же SML.Net, про него - выше, за подробностями - в поиск.
он не просто более демократичен, одним из достижений платформы является возможность написания классов на удобном языке. А затем объединения в единый проект. И тут джава платформе .нет не конкурент.
у второго расширена система типовА можно поподробнее?
C++ - библиотеку не вот-то используешь в C-программеНу а это вообще ерунда какая-то. Есть такая штука как sip.
Кроме MC++ СLR может хостить и С++ (не знал?)
я ж говорю - в поиск
http://research.microsoft.com/projects/ilx/fsharp-manual/import-interop.aspx
http://research.microsoft.com/projects/ilx/fsharp-manual/export-interop.aspx
?
так F# другое
![](/images/graemlins/wink.gif)
Другой вопрос, что адаптировать что-то кроме самой жавы к ее станадртам - нереально. Слишком далеко жава шагнула вперед своего времени. .НЕТ - есть компромис, который так понравился большому кол-ву программистов. Изучив дотНЕТ и не изучив жаву, утверждать, что жава отстой по сравнению с дотнетом, как минимум неразумно.
Утверждение, что на жаве мало написано - это аргумент примерно их той же оперы, что и "Русский язык отстой, потому что на нем разговаривает всего-то около 150млн человек, а вот английский, да китайский и индийским - это рулез, 4 миллиарда на них говорят"...
Просто большинство программистов, уяснив с программистких пеленок, что Си - рулез, продолжают на нем сидеть, во что бы то не стало. И начали изучать что-то другое только когда это другое адаптировали под их любимый стандарт. И вот когда появился порт жавы для Си - вот тогда все и сказали, какой этот порт крутой, а вот жаву "не читали, но решительно осуждаем"...
![](/images/graemlins/smile.gif)
//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 ) );
}
НО! На Java просто дохрена готового кода и реальная кроссплатформенность, причём это немаленький список платформ, до которого .Net не скоро дорастёт, если ваще дорастёт
Имхо для разработки с нуля (и под Win) .Net лучше, но большая вероятность, что на Java это можно писать не с нуля.
Через некоторое время думаю ситуация изменится в сторону .Net, но многое ещё зависит от Mono и т.п.
Добавь в свой код множественное наследование, исключения и шаблоны - эта часть сильно увеличится.
В частности, один объект на С++ перейдёт в несколько указателей на С, один шаблон - в несколько объявлений и т.д.
Языки потому и разные, что перевод из одного в другой нетривиален - перевод даже не кода, а только интерфейсов.
В случае же .Net-языков, каждая сущность какого-либо языка соответствует ровно одной сущности C#, если мне правильно доложили.
На остальное отвечу позже, когда до инета дойду.
Разве с Питоном были проблемы, кроме производительности?
Вроде бы нет, дойду до инета - поищу.
я имел в виду наболее популярные языки типа Си, Паскаля, Бэйсика
Про Питон был не в курсе. Скорее это исключение, которое лишь подтверждает правило.
С Си - понятно, там арифметика указателей.
![](/images/graemlins/crazy.gif)
Ну да, тебе уже сказали, только сейчас прочитал...
И то, и другое - не проблема. В gcc можно самому задать процедуру обработки исключений. Есть даже такой интересный проект - с++ + linux kernel.
Скорее, наоборот.
В MC++ возможностей больше, чем в C#.
MC++ более низкоуровневый, в нем меньше syntactic-sugar, он менее наглядный, но возможностей в нем больше.
В том числе, оставлены чисто плюсовые фишки - например, template-ы (изменение кода на уровне компиляции).
В C# такого нет? А как же вы живёте
![](/images/graemlins/shocked.gif)
С++ как раз язык, где компилятор с большими наворотами. В VC++ 2005 они пытаются опимизировать IL, а в C# пока не собираются.
в C# - есть generics-и, а в MC++ и generics и template-ы.
ps
в Java-е generic-иков тоже долгое время не было (может и до сих пор нет пока .net не стал наступать на пятки.
psу меня ощущение что все эти генерики в 5 jdk сделаны тока для того, чтобы сишарперы не могли пищать, что у них это есть, а у джавистов нету. типа маркетинг такой хитрый, не больше. ну вот как-то не заметно массового перехода на 1.5
в Java-е generic-иков тоже долгое время не было, пока .net не стал наступать на пятки
![](/images/graemlins/smirk.gif)
Это плюс для джавы?
судя по сабжу мы тут не плюсы обсуждаем
Переходить под дулом автомата на Java 5 никто не заставляет.
То есть, библиотеку шаблонов уже непросто использовать из других языков, так?
Аналогично, я не нашёл по приведённым ссылкам ничего про поддержку функторов в F#.
Tuples тоже "забыли" добавить в систему типов .Net, так что
и с простыми функциями всё не так хорошо.
Ну и очень ху№во было.
Мата производилось больше, чем кода - это с учётом того, что в Java нужно всё писать по 2--3 раза.
Это как это?
![](/images/graemlins/shocked.gif)
public public public static static static void void main main......
Так, что ли?
Это при том, что уже в Borland C++ было 3 типа char: char, signed char, unsigned char.
Интересно, в 98-м году это исправили или "маразм крепчал"?
3 типа char: char, signed char, unsigned charЭто в любом С++
это два раза
три раза - если ещё приходится приведение типов юзать из-за отсутствия generics
Чем функтор отличается от делегата?
![](/images/graemlins/smile.gif)
Ха! А C++ ты ещё * после первого MyCoolClass поставишь, а потом ещё напишешь delete MyCoolClass.
IMyCool x = new MyCool;
C++ ты ещё * после первого MyCoolClass поставишь
MyCoolClass x;
А вот и не поставлю, так как не пишу на плюсах.
А в правильных языках есть type inference.
> delete MyCoolClass
Неа, скорее delete x.
Но чаще всего будет
MyCoolClass x;
, и без всякого delete, если я правильно припоминаю зачатки знания C++.
![](/images/graemlins/smile.gif)
отсюда
MyCoolClass x;
не видно, что вызывается конструктор
И слава богу. Зачем об этом думать, когда читаешь эту строчку?
не видно, что вызывается конструктор
так как не пишу на плюсах
Надо же и впрямь не программируешь
MyCoolClass x;
![](/images/graemlins/grin.gif)
![](/images/graemlins/tongue.gif)
Why don't you implement functors?Мда, ML без функторов. Кастрировали!
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.
А что такое делегаты, где проще всего написано?
важнее не сколько писать (хорошие среды помогут а как легко читатьреспект!
ну как, строчка выполняет действия, а ты считаешь об этом не нужно думать?
например, здесь:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vcrefthedelegatetype.asp
Похоже, делегаты - это аналоги функциональных типов в MLях.
Java - говно.
C# - говно.
А настоящий ОО язык был только один - Smalltalk.
Даешь переход на Smalltalk!
В чем кардинальное отличие функтора от функциональных типов?
Ok. Java - гавно, C# - гавно. Но последний хоть активно развивают.
По-моему даже в паскале это есть.
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.
Делегаты - походу усечённые closures.
Я про них и говорил.
В паскале ничего похожего нет (не уверен про delphi но и там вряд ли).
Получается, что Functor - это delegate + generic, соответственно, в C# 2.0 - оно есть.
В borland pascal нечто подобное было. Я даже пользовал.
Там можно объявить локальную процедуру(внутри другой процедуры которая помнит более высокий контекст.
Это и в GNU C можно.
Но только когда тот более высокий контекст уничтожается, имеем висячие ссылки.
Closures + lexical scoping требуют garbage collection.
Ещё, они пишут, что за образец взяли скорее OCaml, нежели SML.
Но при этом отказались от его ОО-системы.
Наверное, она тоже не укладывается в .Net.
пора создавать тред "Флейм про ЯП"
ну как, строчка выполняет действия, а ты считаешь об этом не нужно думать?А что вот строчка
new int[10];
выполняет аллокацию памяти. А знаешь какой это сложный процесс, там chunk-и какие-то надо проверить блаблабла и что об этом _надо_ думать?
![](/images/graemlins/confused.gif)
![](/images/graemlins/crazy.gif)
В некоторых случаях об этом надо думать.
http://www.robert-tolksdorf.de/vmlanguages.html
Внушительный список языков, разработанных/спортированных под JVM.
Внушительный список языков, разработанных/спортированных под JVM.
Внушительный список языков, разработанных/спортированных под JVM.Вопрос скорее не во внушительности списка, а в работоспособности его компонентов. Просмотрел бегло. С некоторыми представителями приходилось сталкиваться. Весьма убого.
Кроме того, 50% списка - интерпретаторы языков, написанные на Java. Не думаю, что они имеют право зваться "разарботанные/спроектированные под JVM".
Ну а некоторые вроде нормальные.
ML без модулей и функторов - тоже убого.
Ну кто ж спорит
![](/images/graemlins/smile.gif)
Речь скорее о том, что широкоуниверсальныемегасовместимые виртуальные машины убоги по своей сути, т.к. напоминают сферическую лошадь в вакууме. Слишком уж многие вещи нужно абстрагировать, чтобы сделать действительно универсальную виртуальную машину. Лучшее что можно получить - не слишком универсальную виртуальную машину, ориентированную под ту или иную концепцию, что и получаем в лице что дотнета, что жавы, которые не очень хорошо стыкуются со всем, что далеко отходит от процедурно-ооп ориентированных языков.
---
...Я работаю антинаучным аферистом...
+1
У сборщика мусора тоже есть ограничения, например, сборщик мусора не гарантирует порядок удаления объектов.
---
...Я работаю антинаучным аферистом...
Объект(сущность который больше не нужен, и мусор - это не одно и тоже.
Да шо ви говорите...
![](/images/graemlins/shocked.gif)
(Читать умеешь? Название треда читал?)
Не нужно --- не храни.
---
...Я работаю антинаучным аферистом...
Между состояними нужен и не нужен, есть еще пограничное состояние - объект уже не нужен, но он еще нужен для того, чтобы произвести какие-то действия, связанные с тем, что он больше не нужен.
состояний" нет.
Все действия, связанные с тем, что он больше не нужен,
в высокоуровневых языках выполняются сборщиком мусора.
---
...Я работаю антинаучным аферистом...
If Java had a real garbage collector, most programs would just delete themselves on startup (c) не помню
На практике проверено - так и есть.
![](/images/graemlins/lol.gif)
супер! а почему гугл афтора не нашел?
спасибо, а то я тоже не смог найти оригинал
ф тысяче и ниибёт!
Да ладно вам. Я вчера видел как дотнетфреймворк выкидывал OutOfMemoryException раньше чем успевал запустить ГЦ. Типа 400 метров свободны, прога их постепенно зажирает, хуяк, ексепшен. Ставим в кадой итерации ГЦ.Коллект - всё нормально. Было забавно.
Не позорьтесь из-за своего невежества.
не видел не одной нормальной программы на джаве. Вообще не пинимаю, как такая уродская технология могла так широко распространится. Радует только, что скоро она подохнет на windows окончательно и бесповоротно
SAP NetWeaver, например, на J2EE .
Что такое SAP объяснять?
![](/images/graemlins/smile.gif)
Дойч Банк - работа с ценными бумагами - на J2EE
Впрочем, вы могли видеть тока проги на перле каком-нибудь, да на голом C, наверное.
Ценна платформа
J2EE - мэйнстрим. Все корпоративные системы (это круче, чем программа типа ICQ или др. дешевка) пишутся сейчас на J2EE и .NET (некоторые ведутся на проприетарность от микрософта)
Это конечно да, когда пишешь что-то большое, то важно чтобы можно было максимально воспользоваться готовой инфраструктурой. Только ведь все равного много кода писать придется. А на этот процесс язык оказывает ощутимое влияние. Вот увидишь когда в EJB3.0 начнут юзать всякие аннотации и т.д.
большую часть того что будет введено в EJB 3.0 для CMP бинов можно реализовать какими-нибудь визардами в том же JBuilder-е.
Уже давно никто не пишет ручками ejb-jar.xml и др.
![](/images/graemlins/smile.gif)
Так зачем из-за какого-то стандарта менять язык?
Что-то необходимое - да. А из-за чего попало - не такие глупые в JAVA community
проблемы EJB 2.1 - это не проблемы самого языка
Про кодогенерацию и визарды я уже вроде писал. Плохое решение. У MS больше преимущество -- они сегодня разрабатывают свои API. Просто кто-то верит, что если очень постараться и сделать грамотный API, то можно будет меньше обходится визардами и кодогенерацией (посмотрим, как это у них получится). У Java сегодня вообще возможности что-либо метять мало. Иначе пропадет все преимущество в виде существующих наработок. Если вернутся к разработке хорошого API, то уже становится не безразлично каким кол-вом абстрацкий можно манипулировать. Понятно, все эти абстракции мало полезны, если их не поддерживает язык. А язык у Java -- не самое сильное место. Вернулись к тому, с чего начали Java - говно.
А когда они не разрабатывали своих API?:
У MS больше преимущество -- они сегодня разрабатывают свои API.
С нуля и создавая новую платформу.
ЯВА УНЫЛОЕ ГОВНО, НАСТОЛЬКО УНЫЛОЕ, ЧТО БОЛЕЕ УНЫЛОГО НЕ БЫВАЕТ, В ЯЗЫКЕ НЕТ НИЧЕГО, НИКАКИХ КОНСТРУКЦИЙ, ЗАТО ТОННЫ ГОВНА ТЯНУТСЯ ИЗ ЯВЫ И ЕЕ БИБЛИОТЕК КО ВСЕМ ОСТАЛЬНЫМ ЯЗЫКАМ. ТАКОЙ КИЗЯКОВО-ГЛИНЯНЫЙ КОЛОС, НАСПЕХ СВАЯННЫЙ, БЕЗ СТАНДАРТОВ, БЕЗ НИЧЕГО. ЧТО ЯВА ДАЛА МИРУ - НИЧЕГО, ТОННЫ ГОВНА, С ЧЕМ СРАВНИТЬ-ТО Я НЕ ЗНАЮ, С СИ ДАЖЕ ЯЗЫК НЕ ПОВОРАЧИВАТСЯ ТАКОЕ ЧУДО СРАВНИВАТЬ - ГНИЛОЙ БЕЙСИК-ИНТЕРПЕРДАТОР
Блядь, да азебала эта хуява поёбленая в пизду и в клитор одновременно со смегмой вместо смазки
Оставить комментарий
vijrel7878
не видел не одной нормальной программы на джаве. Вообще не пинимаю, как такая уродская технология могла так широко распространится. Радует только, что скоро она подохнет на windows окончательно и бесповоротно