Що не так з Java, System Development
system development and more.
Що не так з Java?
Мене довгий час мучило питання, чому програми на Java такі гальмівні? Якщо вірити синтетичним тестам на The Computer Language Benchmarks Game, то в середньому додатки на Java працюють лише в 2 рази повільніше при використанні пам'яті в 10 разів більше до C++ додатків. В принципі, це не такий уже й великий розрив. Хоча в цих тестах немає додатків на Objective-C, я думаю що результат для був-б приблизно тим же, ну може пам'яті витрачалося б не в 10, а в 5 разів більше, адже з додатками на Objective-C можна нормально працювати. Так у чому ж справа?
Відповідь прийшла несподівано. Зацікавившись Andoid, а додатки для нього пишуться саме на Java, я схоже натрапив на відповідь. Хоч як це сумно, справа в програмістах. Розробники Java живуть у світі необмежених ресурсів – нескінченної пам'яті, нескінченного дискового простору та нескінченної продуктивності процесора. І в результаті ми маємо дуже сильне ускладнення ПЗ із втратою продуктивності для читабельності та простоти розробки. І якщо така стратегія працює для корпоративного ПЗ, де користувач буде працювати з тим, що йому дали (ніби то що йому дали не працювало), а потужність серверів дійсно висока, то десктопне ПЗ, і вже тим більше мобільно ПЗ починає стикатися із серйозними проблемами.
Вивчаючи приклади Open Source додатків під Android просто дивуєшся, наскільки безграмотно вони написані з точки зору обмеження ресурсів, що використовуються. Купа марних абстракцій, нагромадження патернів (привіт не розумію навіщо була створена GoF) і бездумне використання пам'яті. Досить показовий момент – основніпоради розробникам під Android зводяться до того, що треба плодити менше сутностей, більше думати про складність алгоритмів, що використовуються, і менш фанатично ставитися до ООП. Створюється відчуття, що поява GC, спрощення розробки та віддалення від проблем середовища виконання викликало сильну деградацію розробників.
Одне радує, тепер зрозуміло, чому на десктопах кількість додатків написаних на C# або Java мізерно мало
Схожі нотатки:
ABOUT THE AUTHOR
Alexander Stavonin
5 Comments → Що не так з Java?
Ну про GoF давно відомо, що його придумали, щоб було чим користуватися індійському програмісту, коли своїх мізків не вистачає. Мене ось завжди вганяють здивування люди, які, коли їх запитуєш за яким ... тут стільки всього напхано - починають нести завірюху про розумні покажчики, Александерську, або ще чого вони там де напхали. Таке відчуття, що у них в голові невеликий комп'ютер з цитатами з книг, а своїх мізків зовсім немає.
Чесно сказати, мене такий підхід теж дуже дивує. Таке відчуття, що код в який впхнули якомога більше патернів за умовчанням буде працювати краще ніж код віз них. Особливо яскраво це звичайно в Java і C# проявляється, плюси ця напасть обійшла стороною
Які саме абстракції ви вважаєте марними? Всі ці поради щодо мобільної Java існують ще з часів J2ME і мобільна Java працює на купі девайсів. Крім того існує безліч десктопного софту написаного C # (windows) і Java (linux / windows).
Я вважаю марною захопленнями абстракціями заради абстракцій. Цим дуже грішать Java і C# розробники. Про багато десктопного софту це сильно. Ну, я вважаю, що це як з невловимим Джо, все про нього чули, аленіхто не бачив
Хочеться більше конкретних прикладів. Ну хоча б кілька найбільш характерних прикладів марних абстракцій та бездумного використання пам'яті. Просто я припустимо в серйозних проектах на C++ не брав участі, тому відразу не можу зрозуміти, що сишники вважають бездумним.