Monday, July 23, 2007

Java

Тези дни от няколко места дочух по нещо за Java и реших, че вече все пак е крайно време да му хвърля един поглед на този език. Влязох на сайта на Sun, намерих един приличен tutorial и се зачетох. Ето ги и първите ми впечатления:

- Нищо ново. Синтаксисът е абсолютно стандартен за език, дериват на C/C++. Това е добре - няма да има изненади.
- Езикът е strongly-typed, което малко дразни. PHP е loosely-typed и това винаги ми е харесвало - не се налага да си тормозя главата със странни структури от данни или да се замислям точно какъв ще ми е масивът. Също така да си дефинирам променливите преди да ги използвам е малко странна практика (признавам, че е добра).
- Малко ми стана странно като разбрах, че според конвенцията за именоване никъде не се използва подчертавка (_). Странно. За доларчето ($) е ясно, но защо пък и подчертавката?
- Най-странно ми стана, когато разбрах, че главната функция в програмата (main) трябва да се явява метод на някакъв клас. Тоест пиша public static void main()? Уха... Малко прекалено ми се вижда, но след като идеята на езика е всичко да е обект, значи е ОК - поне запазват консистентност. :) Напомня ми на Lua, където всички сложни структури са масиви. Удобно е, всъщност.
- Друга странност ми се видя, че switch работи само с целочислените типове. Не работи със стрингове? Много странно...
- Много добро хрумване е именованият break - слагаш ли label на някой цикъл, влизаш в амнайстия му вложен цикъл и като разбереш, че вече си си свършил работата прекъсваш направо най-външния. Няма да вдигаш флагове и да се занимаваш с глупости. Е, не е конструкция, която ще използвам всеки ден, но е добра идея. Само дето малко утежнява четенето, но какво да се прави.

5 comments:

Венски said...

ще ми се да споделя че идеята с break и излизане от най-външния цикъл ми се струва че е добавена от някой мързелив програмист и ако ти се наложи да я използваш значи е добре да си прегледаш кода и леко да го пренапишеш. в смисъл хубаво е да можеш да правиш простотии, но не мисля че е много добра практика ;)

а по въпроса за public static void main(String[] argv){...} - това е в случай че пишеш приложение. в момента в който пишеш библиотека - всичко си е обекти и никъде няма бля бля бля main(бля) ;) което прави нещата доста по-чисти :)

освен туй това което си видял за жабата и това което аз си мислех че знам за жабата се оказват доста начални познания, които въобще не разкриват какво може езика ;) хайде някой ден като понауча още малко ще седнем на по няколко КБ и ще си приказваме умни приказки :P

ro-tex said...

След известно премисляне по темата и аз стигнах до подобен извод за break-а. По-скоро до това, че може да се омаже нещо и после търсенето на грешката ще е истински ужас. Или пък някой ентусиазиран хакер като SASh може да хване и да натвори разни чудеса из сорса, които чрез странични ефекти на поведението да правят много хубави работи, само че на простосмъртните като мен ще им отнеме цяла вечност размисъл за да ги прозрат.
В общия случай лошото, което виждам в именования break е нарушаването на най-златното правило - KISS. ;)

За main() - е, то е ясно,ч е като пишаш библиотека блъскаш само класове. Идеята беше, че ми стана супер странно, че самото ти приложение се явява клас. Някакво... неестествено... :)

Много съм навит на умните приказки, всъщност. Още повече съм навит на няколкото КБ! :)
Ако ти се отвори свободна вечер за тая седмица - свиркай, че после нали се отнасям на изток и няма да ме има известно време.

S Blyahoff said...

И аз съм се занимавал малко със жабата, а по принцип имам представа и от PHP и C#. В Java освен именования брейк, който вие вече добре разнищихте, не ми харесва и въпроса с garbage collector-a, можело е и малко по-простичко да го направят, а ефективността и бързинатя (под вниманието и на днешните машини, на които се изпълнява всичко) е нямало да пострада изобщо.
Друго което не харесвам на езика, е че навсякъде другаде, освен на mobile devices е доста тромав като приложение. Свалете си някоя програма за Windows писана на Java и вижте за какво става на въпрос.
Очаквания отговор за световно изестното ICQ, което е писано на java не минава, защото с минимална функционалност icq клиента все пак си е много тромав и в последно време все по-бъгав.

ro-tex said...

Истина е, че доста Java приложения са тромави и бъгави, но май големият им проблем е не другаде, а в многото RAM, който консумират.
Иначе има доста качествени продукти. Не мога да не се сетя за Zend Studio, което е просто супер.

Иначе за garbage collection нищо не знам. За сега само съм хвърлил един поглед на езика без да задълбавам. По-нататък може да опра и до това. :)

Венски said...

без да съм много сигурен бих предположил че количеството рам не се заема от приложението а от jvm (което оставям сам да се сетиш какво е), която се стартира по веднъж за всяко приложение. от фантук фантатък приложението си заема колкото трябва да заема ...