Какво не е наред с Java, System Development

развитие на системата и др.

Какво не е наред с Java?

Дълго време бях измъчван от въпроса защо Java приложенията са толкова бавни? Според синтетичните тестове в The Computer Language Benchmarks Game, средно Java приложенията работят само 2 пъти по-бавно, докато използват 10 пъти повече памет от C++ приложенията. По принцип това не е толкова голяма празнина. Въпреки че в тези тестове няма Objective-C приложения, мисля, че резултатът за ще бъде приблизително същият, добре, може би не 10, но 5 пъти повече памет ще бъде изразходвана, но можете да работите нормално с Objective-C приложения. И така, каква е сделката?

Отговорът изникна неочаквано. След като се заинтересувах от Andoid, а както всички знаят, приложенията за него се пишат на Java, изглежда попаднах на отговора. Колкото и да е тъжно, бизнесът е в програмистите. Java разработчиците живеят в свят на неограничени ресурси - безкрайна памет, безкрайно дисково пространство и безкрайна мощност на процесора. И в резултат на това имаме много силно усложняване на софтуера със загуба на производителност в името на четливостта и лекотата на разработка. И ако такава стратегия работи за корпоративен софтуер, където потребителят ще работи с това, което му е дадено (сякаш това, което му е дадено, не работи), а капацитетът на сървърите е наистина висок, тогава софтуерът за настолни компютри и още повече софтуерът за мобилни устройства започва да се сблъсква със сериозни проблеми.

Изучавайки примери за приложения с отворен код за Android, просто се чудите колко неграмотно са написани по отношение на ограничаването на използваните ресурси. Куп безполезни абстракции, куп шаблони (здравейте, не разбирам защо е създаден GoF) и напълно необмислено използване на паметта. Доста показателен момент - основниятСъветът към разработчиците на Android е да създават по-малко обекти, да мислят повече за сложността на използваните алгоритми и да бъдат по-малко фанатични по отношение на ООП. Изглежда, че появата на GC, опростяването на разработката и отдалечаването от проблемите на средата за изпълнение са причинили най-силната деградация на разработчиците.

Едно нещо радва, сега е ясно защо на настолните компютри броят на приложенията, написани на C # или Java, е незначителен

Свързани бележки:

ЗА АВТОРА

Александър Ставонин

5 коментара → Какво не е наред с Java?

Е, за GoF отдавна се знае, че е измислен, за да има какво да използва индийски програмист, когато мозъкът му не стига. Винаги се чудя на хора, които като ги питаш за какво... толкова много неща са напъхани тук започват да носят виелица за умни показалки, Александрска или каквото там са напъхали. Изглежда, че имат малък компютър в главата си с цитати от книги, но изобщо нямат собствен мозък.

Честно казано, този подход също ме изненадва. Изглежда, че кодът, в който са вкарали възможно най-много модели по подразбиране, ще работи по-добре от кода, който ги носи. Това е особено ярко, разбира се, в Java и C # се проявява, това нещастие заобиколи плюсовете

Какви абстракции смятате за безполезни? Всички тези съвети за мобилна Java съществуват от дните на J2ME и мобилната Java повече или по-малко работи на куп устройства. В допълнение, има голямо разнообразие от настолен софтуер, написан на C# (windows) и Java (linux/windows).

Считам за безполезно да се увличаме по абстракциите заради самите абстракции. Това е много голям грях за Java и C# разработчиците. За много настолен софтуер това е силно. Е, предполагам, че е като неуловимия Джо, всички са чували за него, ноникой не е виждал

Бих искал по-конкретни примери. Е, поне някои от най-характерните примери за безполезни абстракции и необмислено използване на паметта. Просто не съм участвал в сериозни проекти в C ++, така че не мога веднага да разбера какво смятат писателите за безмислено.