Разглеждах книги в книжарницата. Видях няколко за Java и ми се прииска да ги купя. Това ме изненада – от почти две години не пиша на Java. Запитах се защо и открих, че храня много прияти спомени от това време. Не мисля, че бих започнал нов проект или бих се хванал на работа с Java. Но съм научил много неща покрай него. И продължавам да научавам. Нека обясня.
Езикът опитва да бъде прост и лесен. Конструкциите са сведени до минимум. Оставени са само най-лесните за научаване. Всичко, което е дори „малко опасно“ или „малко сложно“ (управление на паметта, предефиниране на оператори) или води към „съмнителни практики“ (код в глобалното наименовано пространство, функции без клас) е изхвърлено. Резултатът е прост език, който се научава за една вечер. Кодът е много лесен за разбиране. Подходящ за посредствени или „не-толкова-добри“ програмисти.
Ако за момент зарежа политическата коректност: език, на който да могат да работят идиоти. Вероятно знаете, но аз вярвам, че идиотите трябва да си сменят професията, а не да ползват компилатор. Радикалното ми мнение настрана, не мога да харесвам език, който ми вързва ръцете.
Не харесвам Java задари езика.
Платформата е невероятно добра. Или поне така казват. Чувал съм хора да твърдят, че е писана от извънземни. Това досега не ме е интересувало. Почти всичкия софтуер, който съм правил се оправя страхотно с релационна база данни като PostgreSQL и интерпретативен език като Ruby. Всъщност, би се оправил дори и върху PHP и MySQL. Рядко съм изпитвал нуждата от повече. Единственото, което усещам, е че се стартира бавно и яде много памет.
Така че не, не харесвам Java заради платформата.
Обаче:
Много умни хора го правят. Бившите Smalltalk-аджии, agile общността и гурутата на обектно-ориентираното програмиране – всички те се ориентираха към Java. Предполагам защото платформата е страхотна, а езика – поносим. Това създава интересна ситуация – умни (да не кажа – брилянтни) хора ползват Java за да си свършат работата. Това довежда до редица креативни решения – книги с добри практики, нови подходи като AspectJ, framework-ци като Spring и Hibernate и прочее. Дори и Maven, всъщност. Понеже Java е прост и ограничен език, тези неща се лесни за разбиране. Могат да се демонстрират в много чиста форма.
Покрай Java съм научил много. Хватки за писане на автоматизирани тестове, добри практики, методологии, редица pattern-и и предимствата на IDE-та. Когато група умни хора са изправени с твърди ограничения, те достигат до нещо добро. Намират прости и елегантни начини да се справят с тях. Нужна е малко наблюдателност да ги забележиш, малко опит да ги осмислиш и малко въображение да го приложиш на друго място (например Ruby). Всичко, което съм научил като Java програмист ми е било полезно (по един или друг начин) в Ruby. Или в Python, Perl и PHP, ако става въпрос.
Двете книги, от които това започна са:
Не знам дали са добри, но технологиите плюс репутацията на издателя предизвикват интерес. Някой да има наблюдения?
Напълно съм съгласен с теб. Java е адски удобен език, а факта че има толкова фреймуърци е … да не споменавам GWT, което според мен е най-хубавото нещо след рязания хляб :).
Макар че има и някои проблеми, основно синтактичното вдълбаване до степен да почнеш да правиш челни стойки за да влезеш в идиомите на езика …
Всъщност те спамя за да те убедя да хвърлиш едно око на следната статия: http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html
От извесно време боря хаскел и трябва да ти кажа че функционалното програмиране води до доста мощни конструкции … с цена лесното научаване … но както казва Дийкстра, програмирането е сложна дейност и да се бориш дори тези, които не го могат, да го правят, е меко казано противоречиво …
Не си прав! 🙂