JavaRush /Java Blogu /Random-AZ /Gəlin əvvəldən başlayaq və ya 'Salam, Java Dünyası!'
articles
Səviyyə

Gəlin əvvəldən başlayaq və ya 'Salam, Java Dünyası!'

Qrupda dərc edilmişdir
Mən bu məqaləyə qeyri-adi, ilk baxışdan kənara çıxma ilə başlamaq istəyirəm. Daha sonra dəqiq səbəb bəlli olacaq.
Əvvəldən başlayaq və ya Salam, Java Dünyası!  - 1
Beləliklə, Birini təsəvvür edək. Bu Kimsə dağ xizəkçiliyinə yiyələnmək istəyir. Və bunun üçün o, aşağıdakı addımları atır:
  • Təlimatçılar, dərsliklər, dərsliklər və s. - bunların hamısı şərdəndir. Xizək sürməyi özünüz öyrənə bilərsiniz. Bundan əlavə, məktəbdə xizək sürməyi yaxşı öyrəndi. Müvafiq olaraq, daha bilikli insanların bütün tövsiyələrinə məhəl qoyulmur.

  • Ən keyfiyyətli avadanlıq seçilir. Ekspert səviyyəsindən aşağı deyil. Ayaqlarınızı incidən sərt çəkmələr. Bükülmək üçün fantastik miqdarda səy tələb edən sərt xizəklər, Kiminsə fiziki hazırlığı səviyyəsini çox üstələyir. Yaxşı və s.

  • Test treki... tutaq ki, nəhəng slalom üzrə Dünya Kuboku mərhələsinə ev sahibliyi edən trekdir. Bu oxumaq üçün doğrudur.
  • Eyni ruhda davam edin.
Beləliklə, sual budur. Siz buna nə ad verəcəksiniz? Şəxsən mən 20 ilə yaxındır dağ xizəyi ilə tanış olan bir şəxs kimi onu (və bu hələ də çox mülayimdir!) - ümidsiz adlandıracağam. Bu yanaşma ilə heç nə öyrənmək tamamilə mümkün deyil. Ancaq incitmək üçün əmin bir yol. ƏN əmin olan şey xizək sürmək fikrindən həmişəlik imtina etməkdir. Düşünürəm ki, bu qiymətləndirmədə mənimlə razılaşacaqsınız. Hər halda, demək olar ki, əminəm ki, bu Kimsə ona xoşagəlməz bir şeyin ünvanlanacağını gözləməyəcək. İndi başqa birini təsəvvür edək. Deyək ki, informatika tələbəsi olsun. C++, C#, Pascal dillərində müəyyən qədər biliyə malikdir. O, Java dilini öyrənmək istəyir. Onun hərəkətləri:
  • Onun bilik səviyyəsinə uyğun ədəbiyyat (açıq desək, sıfır səviyyə) bir kənara süpürülür. Qeyd olunan C++, C# və OOP nəzəriyyəsi ilə bir az tanışlığa əsaslanır.
  • Ən güclü proqramlaşdırma mühiti alınır. Tutaq ki, Eclipse və ya NetBeans. Hər şeyi özü edən, sadəcə bir düyməni basın.
  • Sınaq tətbiqi olaraq biz seçirik... yaxşı, deyək söhbət. Müştəri-server proqramı, applet şəklində müştəri hissəsi, server hissəsi - veb xidməti və ya ən pis halda servletlər. Sadəcə öyrənmək üçün doğru.
Sual. Siz buna nə ad verəcəksiniz? Paradoksun nə olduğunu bilirsinizmi? Fakt budur ki, bu halda qərəzsiz qiymətləndirmələr əhəmiyyətli dərəcədə azalacaq. Baxmayaraq ki, vəziyyətlər hər cəhətdən eynidir. İkinci halda sağlamlıq və həyat üçün nəticələr daha az ölümcül olmadıqda. Bəlkə problem bundadır? Vəziyyətlər həqiqətən çox oxşardır. Mən onları eyni üslubda xüsusi təsvir etdim. Və qəribə bir şey: əgər birincinin absurdluğu göz qabağındadırsa, ikinci ssenarini həyəcan verici sayda təcrübəsiz tərtibatçı izləyir. Java dilini mənimsəmək MIDletlər, verilənlər bazası üçün klientlər, söhbətlər, servletlər əsasında vebsaytlar yaratmaqla başlayır... Siz uzun müddət davam edə bilərsiniz. Amma məsələ yenə də aydındır. Eyni zamanda, ilkin səviyyəli ədəbiyyat nifrətlə bir kənara qoyulur. Bunu oxu? Mənə? Bəli, artıq üç ildir ki, C++ dilində yazıram! (Seçimlər Paskalda və hətta vizual əsasdadır.) Və mən OOP-u bilirəm! Yaxşı, ümumiyyətlə. Beləliklə, növbəti nədir? Və sonra bu:
  • 8 baytlıq massivi uzunluğa necə çevirmək olar?
  • Bu niyə baş verir NoClassDefFoundError?
  • Niyə proqramı Eclipse-də işə salıram ( NetBeans/IDEA/JBuilder) və hər şey yaxşıdır, amma onsuz yazıram java HelloWorld.classvə xəta var?
  • Niyə çökür ClassNotFoundException?
  • Niyə kitabxana yoxdur? Mən artıq classes.zip-ə qoymuşam, amma heç bir faydası yoxdur!
  • Niyə mən obyektlər massivi yaradıram, lakin massivin elementindən istifadə etməyə cəhd edəndə mən əldə edirəm NullPointerException?
  • Və niyə...?
  • Və niyə...?
  • Və niyə...?
Niyə niyə niyə? Lakin Java C++ və ya Pascal olmadığı üçün. Və Perl deyil. Bu dilləri bilmək çox vaxt kömək etmir, həm də mane olur. Yalnız ona görə ki, bu dillərin tamamilə fərqli ideologiyaları var. Ancaq xarici oxşarlıq aldadıcıdır. Təbii ki, bütün bu “niyə” və “necə” cavabları kitablarda var. Ən əsas səviyyəli ədəbiyyatda. Amma onu oxumaq tənbəllikdir (variantlar: ayıb, vaxt yoxdur və s.). Mən yaxşı C++ mütəxəssisləri tərəfindən Java-ya köçürülmüş çoxlu stereotipləri bilirəm. Son bir misal: konstruktorda heç vaxt istisna atmamalısınız. Niyə? Bəli, çünki C++ dilində belə obyektin vəziyyəti müəyyən edilmir. Müvafiq olaraq, yaddaş sızması baş verir. Java-da zibil yığıcının olması səbəbindən prinsipcə belə bir problem yoxdur. Ancaq belə hallardan qaçmağa çalışan insanlar var. Sadəcə kök salmış stereotipə görə. Ən pisi isə odur ki, bu səylər nəticəsində kod xeyli mürəkkəbləşir. Sintaksisi öyrənmək asandır. Və tamamilə kifayət deyil. Dilin ideologiyası daha önəmlidir. Və onu ən effektiv şəkildə mənimsəmək üçün ən əvvəldən başlamalısınız. Niyə məhz və necə? Və bu başqa sualdır. Belə ki. Harada və necə başlamaq lazımdır. Bu, nəyə nail olmaq istədiyinizdən asılıdır. Bacarıqlı kodlaşdırma meymunu olmaq istəyirsinizsə, demək olar ki, hər şeydən başlaya bilərsiniz. Peşəkar olmaq istəyirsinizsə, işlər bir az daha mürəkkəbdir. Mənim təcrübəm aşağıdakıları deməyə əsas verir. Peşəkar tərtibatçı ilə “koder” arasındakı fərq odur ki, o, nə baş verdiyini başa düşür. O, düymələri basmaqdan bir az daha çox iş görür. Güclü mühit çox yaxşı köməkdir. Onsuz edə bilənlər üçün. Ancaq çox vaxt onunla başlayanların yeganə vasitəsidir. Və onun yoxluğunda kodlayan meymunun dəyəri sıfırdır. Çünki basmaq üçün düymələr yoxdur. Ümumiyyətlə, düyməyə basmaq həqiqətən dəhşətli formalar ala bilər. Həmkarlarımdan biri Java-da yazılmış bir məhsul gördü. Onu quraşdırmaq üçün təlimatlar bu sözlərlə başladı: “JBuilder-i diskdən quraşdırın...” İndi BU artıq ölümcüldür. Tərtibatçılar məhsulu inkişaf mühiti olmadan işlədə bilmədilərsə, onun necə yazıldığını düşünəndə titrəyirəm. Ən azından həvəskarlar tərəfindən yazılmışdır. “Nə baş verdiyini başa düşür?” deyəndə nəyi nəzərdə tuturam? Bu o deməkdir ki, insan aşağıdakıları başa düşməlidir:
  • Virtual maşın nədir və nə üçün lazımdır?
  • Virtual maşın baxımından sinif nədir.
  • Paket nədir?
  • Kitabxana nədir?
  • Virtual maşın sinifləri necə axtarır və yükləyir; sinif yükləyicisi nədir və necə işləyir; standart olaraq neçə var; sinif yolu nədir.
və s. və s. Siyahı davam edir. Nəzərə alın ki, mən tərtibatçının özünə xas biliyi daxil etməmişəm. İp nədir, OOP nöqteyi-nəzərindən sinif nədir və obyektdən nə ilə fərqlənir, tərtibat menecerlərinin necə işlədiyi - HƏR bir tərtibatçı bütün bunları bilməlidir. Sadaladığım hər şey daha çox texnikidir. Ancaq çox vaxt məlum olur ki, onları bilmək nəyin yanlış işlədiyini anlamaq üçün çox vacibdir. Həyatdan bir nümunə. XML ilə işləmək üçün xalan adlı kitabxana var. O, bir neçə javax.xml... paketləri - təhliledicilər, transformatorlar və s. Bu kitabxana çox məşhurdur. Problem ondadır ki, bu eyni paketlər 1.4 versiyasından bəri J2SDK-da mövcuddur. Sual. Xalan da sinif yolunda varsa, kitabxanadan javax.xml.transform.stream.StreamSource sinfinə daxil olduqda hansı sinif yüklənəcək - kitabxana və ya J2SDK? Bu suala cavab vermək üçün siz sinif yükləyicisinin necə işlədiyini bilməlisiniz. Bir dəfə forumların birində dörd günlük müzakirə gördüm ki, nəticədə bu məsələyə çatdı. Yükləyici ondan gözlənilən sinfi almadığı üçün kod düzgün işləmədi. Mən nəyə nail oluram? Məsələ burasındadır: inkişaf mühiti nə qədər güclüdürsə, o, tərtibatçı üçün bir o qədər çox şey edir - o, bir o qədər az düşünməlidir. Və bu artıq nə qədər pisdir. Meymuna çox yaxın. Bu, nə qədər paradoksal görünsə də, birinci nəticəyə gətirib çıxarır:

Nəticə 1. Java dilini güclü mühit OLMADAN öyrənməyə başlamaq məsləhətdir.

Mən notepad səviyyəli redaktorlarda yazmağın tərəfdarı deyiləm. Ancaq mən bunu yeganə səbəbə görə etmirəm - onlarda, bir qayda olaraq, sintaksis vurğulanmır. Bu, mənfi təsir göstərməyən inanılmaz dərəcədə rahat bir şeydir. Siz Notepad++ kimi bir şeydən istifadə edə bilərsiniz , o, Java sintaksisini başa düşür və yeri gəlmişkən, pulsuzdur. Məsələn, məndə xüsusi olaraq bunun üçün sistemdə qeydiyyatdan keçmiş .java fayl növü var. Beləliklə, sintaksisi vurğulayan və əmr satırı olan mətn redaktoru. İki və ya üç günlük işgəncə - və sinif yolunun nə olduğunu, tərcüməçinin necə işə salındığını və bir çox başqa kiçik şeyləri başa düşmək - bunu başa düşmək əbədi olaraq qalacaq. Daha. Təcrübəm mənə deməyə əsas verir ki, gələcəkdə istifadə üçün bilik əldə etmək mümkün deyil. O mənada ki, ədəbiyyatı yalnız cavab verəcək suallar olanda oxumağa dəyər. Əgər kitab haqqında sualınız olmadan oxusanız, məlumat bir həftə ərzində yox olacaq. Mən bunu çox yaxşı bilirəm, o cümlədən öz təcrübəmdən. Bir dəfə beş dəfə servletlər haqqında kitab oxumağa başladım. İşimdə onlarla məşğul olmağa başlayana qədər məlumat mənimsənilmədi. Və bu təcrid olunmuş vəziyyətdən uzaqdır. Bir zamanlar, çox uzun müddət əvvəl, təxminən 8-10 il əvvəl aşağıdakıları oxudum, təəssüf ki, müəllifi xatırlamıram: İnsana yeni proqramlaşdırma dilini necə öyrətmək olar? Çox sadə. Siz ona bir dil, bir neçə tapşırıq və minimum sənədləri verməlisiniz. Sonra, bir neçə aydan sonra, heç olmasa bu dildə yazmağa başlayanda, hərtərəfli sənədlər təqdim edin. İki həftədən sonra detektiv roman kimi oxunacaq, ondan sonra adam işə hazır olacaq. Bu ifadə ilə 100% razıyam. İki aydan sonra bir tərəfdən bütün xırda məsələlər aradan qalxacaq. Onlara cavablar müstəqil olaraq alınacaq, bu da onların dəyərini xeyli artıracaqdır. Digər tərəfdən, aydın suallar artıq formalaşacaq, cavabları sənədlərlə təmin olunacaq. Bu, birincidən heç də az paradoksal görünməyən ikinci nəticəyə gətirib çıxarır:

Nəticə 2. Java dilini dərsliklərSİZ öyrənməyə başlamaq məqsədəuyğundur. Java API sənədləri + Java dərsliyi - bu, artıq kifayətdir.

Java API sənədləri mütləqdir. Mən onu lokal olaraq diskdə saxlamağı çox tövsiyə edirəm. Onunla iki dəfə yox, hətta on dəfədən çox əlaqə saxlamalı olacaqsınız. Şəxsən elə bir gün keçmir ki, oraya getməyim. Java dərsliyini yerli olaraq saxlamağı da tövsiyə edirəm. Bu, dərsliyi tamamilə əvəz edən giriş səviyyəsində məlumatdır. Bununla belə, orada kifayət qədər miqdarda var. Onu da deyim ki, işdə məşğul olmadığım sahələrdə yenə də özüm üçün yeni bir şey tapıram. Çox oxumaq pisdir. Nə qədər ki, sorğu yoxdur, cavab da yoxdur. Bir az oxumaq da pisdir. Qızıl orta haradadır? Mən bu qaydaya əməl edirəm: sualın cavabını aldığım kimi görünməyə başlayana qədər oxuyuram. 90% hallarda bu belə deyil. Ancaq bu anda dayandırmaq və təkbaşına davam etmək ən yaxşısıdır. İlkin təkan alındı ​​və problemi müstəqil həll etmək daha çox şey verəcəkdir. Təbii ki, müəyyən müddətdən sonra ədəbiyyatla məşğul olmağa dəyər. Ancaq yenə də giriş səviyyəli ədəbiyyat üçün. Bütün bunların cəfəngiyat olduğu görünsə də, ilkin fəsilləri oxumağa dəyər. Demək olar ki, zəmanət verə bilərəm ki, heç olmasa yeni bir şey öyrənəcəksiniz. Və bu bir şey sonradan son dərəcə vacib ola bilər. TAMAM. Deyəsən nədən yazacağımızı anladıq. Necə yazmaq - həm də. Amma nə yazmalıyam? Bu məqalənin haradan başladığını xatırlayın. Ani mesajlaşma sistemi yazmaqla başlamalıyam? Seçim, əlbəttə, sizindir. Mənə elə gəlir ki, buna dəyməz. Tapşırıq nə qədər mürəkkəb olsa, bir o qədər çox sual yaranacaq. Təcrübə olmadıqda, belə bir sıra suallar onları həll etməyin qeyri-mümkünlük hissini verəcək, ardınca öz aşağılığı, axmaqlığı və s. Nəhayət, bu, “cəhənnəmə...” qərarına və dili öyrənməyi dayandırmağa səbəb ola bilər. Bunlar. lazım olandan tam əks təsirə. Bu, Java üçün deyil, öyrənmə prosesinin özü üçün xarakterikdir. Amma nədənsə proqramlaşdırmanın tədrisinə gəldikdə bunu unudurlar. Bu arada, sona qədər yerinə yetirilən kiçik bir iş, səyahətin əvvəlində tərk edilmiş möhtəşəm bir sistemdən daha çox məmnunluq və daha çox bilik verə bilər. Beləliklə, üçüncü nəticə: Nəticə 3. Java dilini öyrənməyə hazırkı Java bilik səviyyənizə adekvat olan tapşırıqlarla başlamaq məsləhətdir. Siz Formula 1 avtomobilində avtomobil sürməyi öyrənməyə başlamamalısınız Dünya Kuboku trekində dağ xizək sürməyi öyrənməyə başlamamalısınız. Eyni şəkildə, böyük bir şey yazmaqla Java-nı mənimsəməyə başlamamalısınız. Mən başa düşürəm ki, ambisiya tələbkardır. Amma bu halda onlar əsassızdır. Və nə qədər əsassız ambisiyalarınız varsa, peşəkar olmaq şansınız bir o qədər az olar. Öyrənmə baxımından diqqətəlayiq bir hadisə, qəribə də olsa, müxtəlif forumlardır. Əgər onlardan ağıllı istifadə etsəniz. Ağıllı - bu, hər zamanki kimi deyil, əksini etmək lazımdır deməkdir. Yəni sual vermək deyil, onlara cavab vermək. İstənilən şeyə çatmaq gücün var. Düşünürsən ki, mən özüm hər şeyi bilirəm, çox yanılırsan. Bəli, çox şey bilirəm. Amma elə sahələr var ki, onlarla heç vaxt rastlaşmamışam. Ya da məndə var, amma çox azdır. Təcrübəmdən klassik nümunə sertifikatlarla işləməkdir: kod imzalanması, təhlükəsiz bağlantılar və s. 1998-ci ildə dissertasiyamı yazarkən bunu etdim, amma o vaxtdan bəri hər şey çox dəyişdi. İllər keçdikcə suallarım yığılıb qaldı. Hətta bəzi ədəbiyyat oxumağa başladım. Ancaq yuxarıda dediyim kimi, gələcək istifadə üçün bilik əldə edə bilməzsiniz. Bu, lom kimidir - bir qulağından girir, digərindən çıxır. Başındakı deşikdən başqa heç bir nəticə yoxdur. Və bu, forumda Tomcat ilə SSL bağlantısı ilə bağlı sual verildiyi zamana qədər davam etdi. Bəzi problemlər var idi. Və yalnız bu sual məni dərindən qazmağa sövq etdi. Bir də müraciət varsa, cavab da var. Mən təkcə insanın probleminin nə olduğunu başa düşmədim, həm də bir çox başqa faydalı məlumat tapdım. Sertifikatların necə işlədiyini nəhayət başa düşdüm. Müvafiq məqalə planlardadır. Və bu hər zaman olur. Mən, məsələn, GUI ilə kifayət qədər işləmişəm. Yalnız forumda kiminsə sualı nəticəsində TextLayout-un bəzi imkanlarını başa düşdüm. Bu sualdan əvvəl onlar haqqında heç bir fikrim yox idi. Eyni şəkildə, bu yaxınlarda bildim ki, JButton da html-i öz başlığı kimi şərh edir. Bundan əvvəl yalnız JLabelin bunu edə biləcəyini düşünürdüm. Bu, yenə də forumun sayəsindədir. Beləliklə, belə çıxır: suallara nə qədər çox cavab versək, özümüzü bir o qədər çox öyrənirik. Odur ki, insan forumda oturursa, deməli, heç bir iş görmür deyə məşhur fikirlərlə razılaşmıram. Bu, aydın deyil və ilk növbədə şəxsin niyə məhz forumda olmasından asılıdır. Və əsasən nə edir - soruşun və ya cavab verin. Əslində, hətta soruşa bilərsiniz. Həm də müdrikliklə. Çözüm istəməyin (və xüsusən bu günlərdə rastlaşdığım “Xahiş edirəm bilənlər, cavablandırsınlar və sual verməsinlər!” yazısı ilə!), əksinə, yenidən təyin etməyi xahiş edin. hərəkət istiqaməti. Tamamilə başa düşüləndir ki, bir başlanğıc üçün harada qazılacağını başa düşmək çətindir, çünki onun sadəcə təcrübəsi yoxdur. Bu, insanın günahı deyil, hətta problem də deyil. Bu yaxşıdır. Hər kəs bu yoldan keçib. Mən daxil. Şəxsən mənim üçün insanın nəyisə öyrənmək istəməsi daha vacibdir. Və yalnız cavab almaq deyil, yalnız proqramlaşdırma laboratoriyasına getdikdən beş dəqiqə sonra onu unutmaq. Mən həmişə sizə hərəkət istiqamətini deyəcəyəm. Onu özüm tanısam. Bilmirəmsə, heç olmasa təxmin edə bilərəm. Mən də mütləq cavab axtaracağam. Amma yəqin ki, heç vaxt birbaşa cavab vermirəm - heç olmasa, xatırlamıram. Yeri gəlmişkən, buna görə forumlardan birini tərk etdim. Mən aparıcı suallar verməyə başlayanda onlar mənə bir ağızdan izah etdilər ki, onlar üçün sadə cavab vermək adətdir. Və suallarımla daha da irəli gedə bilərəm. Nəzərə alsaq ki, forumun səviyyəsi arzuolunan dərəcədə çox şey qoyub, ən azı bu yanaşma sayəsində! - Daha vaxt itirməməyə qərar verdim. Odur ki, bəyəndiyiniz forumu seçin və yola salın. Yeri gəlmişkən, bu sayt məhz forumlardan birinin sayəsində ortaya çıxdı. Orada bir müddət söhbət etdikdən sonra ən çox qaldırılan mövzuların siyahısını topladım və belə bir sayta tələbat olacağını anladım. Və belə də oldu. Demək olar ki, bütün məqalələr forumda bəzi müzakirələrin fonunda yazılır. Və ya mütəmadi olaraq apardığım yazışmaları izləyirəm. Nəticə nədir? Çalış, işlə və yenidən işlə. İlkin mərhələdə özünüzə nə qədər çox imkan verirsinizsə, bir o qədər az bilik əldə edirsiniz. Və peşəkarlığa gedən yol nə qədər uzun olar. Ancaq yalnız siz kim olmaq istədiyinizi seçə bilərsiniz - ağılsızca düyməni basan meymun və ya peşəkar. Bu və ya digərinə nail ola biləcəyiniz yolu yalnız özünüz seçirsiniz. Birinci yol aydındır. İkincisini göstərməyə çalışdım. Hərəkətiniz, cənablar! Orijinal mənbəyə keçid: Gəlin əvvəldən başlayaq və ya 'Salam, Java Dünyası!'
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION