Java – long != Long

Nekad neesmu tā īsti programmējis Javā, jo vienkārši nav bijusi tāda vajadzība. Tomēr ik pa laikam uzduros kādam piemēram, kas man liek atviegloti uzelpot, ka strādāju .NET-ā ar C# un nevis, izmantojot Java.

Javā ir klase Long. C# analogs būtu Nullable<System.Int64> vai long?. Tātad – vērtība var būt vai nu 64bit skaitlis vai arī null. Dokumentācija.

Tik tālu viss būtu labi. Bet... Javā ir arī primitīvais tips long. C# analogs ir System.Int64 vai long. Vērtība var būt 64bit skaitlis, null vērtību piešķirt nevar.

C# valodā atšķirība ir vai nu System.Nullable<> pieraksts vai arī jautājuma zīmes simbols.

Java valodā atšķirība ir lielais/mazais burts.

Es, protams, saprotu, ka jebkuram Java programmētājam šī ir absolūti pašsaprotama lieta, bet man kā skatītājam no malas tas šķiet absolūti idiotisks lēmums valodas veidošanas procesā. Kas rezultējas vairākās stundās, kas pavadītas, meklējot kļūdu.

Ieskatam neliels raksts par to, kā .NET frontē notiek lēmumu pieņemšana: Building Tuple.

Comments (7) -

Smile
Jāsaprot, ko gribi lietot - primitīvos tipus, vai objektus. Protams, 1.5 autoboxing padarīja konvertēšanu sintaktiski vienkāršu.
Un Java valodas veidošanas process ir viens no labākajiem un pārdomātākajiem. Dažreiz, protams, pārāk pārdomāts. API jau ir cita opera...

Šajā gadījumā Core API (java.lang) tomēr iet roku rokā ar pašu valodu.

Problēma jau tajā, ka, kamēr nezini, ka Javā ir šāda "figņa" ar lielajiem/mazajiem burtiem, lasot kodu, nav nekādas iespējas saprast, kurā vietā kods izmanto primitīvus un kurā - objektus.

Njā, .net/C# noobiem to nesaprast...

Knaģi, tā nav figņa. Smile
Tas ir tas pats, kas bļaut, ka normālās failu sistēmās failu nosaukumi ir case sensitive un ka tas ir nepareizi. Vai arī bļaut, ka jautājuma zīmē iekš C# ir kaut kāda "figņa"...
Un kādā ziņā nav iespējas saprast, lasot kodu? long un Lang tas pats, kas ābols un ābele - divi dažādi vārdi, kuriem arī rakstība atšķiras!
Lai nu kura valoda, bet Java ir viena no tā, kur kods ir saprotams viennozīmīgi un nepārprotami!

Nu nedomāju, ka no malas programmētājam arī ar pietiekamām priekšzināšanām (C, C++, PHP, C# un citas c-like valodas) uzreiz būs saprotams, ka long un Long ir kaut kas atšķirīgs. Jā, case-sensitive, bet normāli ir sākotnēji pieņemt, ka tik vienādi nosaukumi arī nozīmē vienu lietu.

C# jautājuma zīme var būt figņa, ko cilvēks nesapratīs, bet jebkurš pamanīs, ka vienā vietā ir jautājuma zīme un otrā - nav.

Javaa klashu/mainigo/konstanshu vaardu konvencija ir lieta, kas maaciibu graamataas parasti ir izskaidrots veel pirms praktisku piemeeru saakuma:

Lielais saakumburts vienmeer identificee klasi. Punkts.

un tas ir tik pat diivaini kaa Pyton bloku noraadiishana ar indentaaciju vai php dinamiski tipizeetie mainiigie nezinaataajam.

Ceru, ka nekad nesastapsies ar Go:
scienceblogs.com/.../googles_new_language_go.php The way that you make things public is by lexical cues: public things are things that were declared with an identifier starting with an upper case letter. "fact" is private, "Fact" is public.

Comments are closed