JavaRush /Java Blog /Random-TL /Kay Horstmann at ang kanyang 1500 salita sa kung paano ma...

Kay Horstmann at ang kanyang 1500 salita sa kung paano maging isang mas mahusay na Java programmer

Nai-publish sa grupo
Malamang na narinig mo na ang pangalang Cay S. Horstmann. Siya ay isang medyo kilalang tao sa mundo ng Java at ang may-akda ng maraming mga libro sa ating minamahal na wika. Kabilang sa mga ito ang klasikong kursong "Core Java" (nai-publish sa Russian sa dalawang-volume na aklat na "Java. Professional's Library" ) at isang serye na may maikling buod ng kakanyahan ng "Java for Impatient" (nai-publish sa Russian "Java SE 8. Panimulang Kurso” at “Java SE 8. Pangunahing kurso " ). Taglay niya ang ipinagmamalaking titulong "Java Champion". At sa link na ito mahahanap mo ang kanyang lumang website ng paaralan na may kawili-wiling impormasyon.
Kay Horstmann at ang kanyang 1500 salita sa kung paano maging isang mas mahusay na Java programmer - 1
Ibinibigay namin sa iyo ang isang pagsasalin ng isang artikulo para sa mapagkukunan ng InformIT , kung saan tinig ni Kay ang ilang mga tip para sa pagsisimula at pagpapatuloy ng mga programmer kung paano maging mas mahusay sa kanilang propesyon. Isang araw, hiniling sa akin ni Jennifer Bortel, editoryal na direktor ng InformIT, na mag-drop ng isang linya kung paano maging isang mas mahusay na Java programmer. Iminungkahi niya na ako, ang may-akda ng Core Java para sa Impatient, ay maaaring may alam tungkol dito. "Wala nang mas madali, bumili ka lang ng libro," naisip ko noong una. Ngunit ang sagot na ito ay hindi gumana, dahil kailangan kong magkasya ito sa 1500 na salita, at hanggang sa puntong ito ay mayroon lamang 62 sa kanila * ( siyempre, kapag isinalin ang artikulo, hindi namin sinubukan na mapanatili ang bilang ng mga salita - tinatayang pagsasalin. ). Nakatanggap ako kamakailan ng email mula sa isang kaibigan ng developer na tinanong sa isang panayam kung bakit hindi ligtas sa thread ang sumusunod na code:
class ThreadSafeClass extends Thread
{
     private static int count = 0;

     public synchronized static void increment()
     {
         count++;
     }

     public synchronized void decrement()
     {
         count--;
     }
}
Nagpasya ang aking kaibigan na ang code sa halimbawang ito ay thread safe, at sumang-ayon ako sa kanya, na binanggit na mayroong isang keyword na nawawala staticsa pangalawang paraan, at sa sandaling ito ay naipasok, ang pag-access ay kinokontrol ng built-in na lock ng object ng klase. Sinabi ko rin na hindi ito magandang tanong sa panayam dahil kung kailangan mo ng thread counter, mas mahusay kang gumamit ng AtomicInteger. Ngunit sa kalagitnaan ng gabi ay nagising ako at nagtaka: paano kung ang salitang ito staticay binitawan nang may dahilan? Marahil ay sadyang ginawa ng ilang palihim na tagapanayam ang halimbawang ito sa paraang iligaw ang mga kandidato? Kaya't sumulat ako pabalik sa developer na nagtanong ng tanong at sinabing malamang na mali ako kanina: sa isang parallel universe na tinatawag na Interview Questions, ang sagot sa tanong na ito ay: "Ang pangalawang paraan ay naglalaman ng object lock." Pagkatapos ng sagot na ito, tinanong ng lalaki kung nagpapatakbo ako ng isang channel sa YouTube kung saan nagtuturo ako kung paano pangasiwaan ang mga ganitong uri ng mga problema sa panayam. Naku, hindi ko ginagawa ito. Nagtuturo ako ng computer science at nagsusulat ng mga libro, ngunit ang pangunahing layunin ko ay hindi ang gumawa ng mas mahusay na "mga solver ng problema sa pakikipanayam," ngunit upang gawing mas mahusay na programmer ang aking mga mag-aaral. Noong unang panahon, si Peter Norvig ( American scientist sa larangan ng artificial intelligence, Google research director - approx. trans. ) ay nagsulat ng isang kahanga-hangang artikulo sa kanyang blog. Nagtalo siya na ang mga aklat na nangangako na magtuturo sa iyo ng Java sa loob ng 24 na oras o 21 araw ay katawa-tawa lamang. Mahirap hindi sumang-ayon sa kanya: ito ay tumatagal ng 10 taon, o marahil 10,000 oras, upang maging isang dalubhasa sa anumang larangan. At kilalang-kilala na ang mga eksperto ay nagpoproseso ng impormasyon nang iba sa mga baguhan. Sa isang klasikong eksperimento, ang mga may karanasan at baguhang manlalaro ng chess ay ipinakita sa isang chessboard na may isang tiyak na pag-aayos ng mga piraso sa loob ng ilang segundo, at pagkatapos ay itinago ito at hiniling na ayusin ang mga piraso kung ano sila. Ang mga nagsisimula ay hindi nakayanan ang gawain nang napakahusay, ngunit ang mga eksperto ay walang anumang mga problema. Ngunit sa ilalim lamang ng isang mahalagang kondisyon: ang pag-aayos ng mga piraso ay dapat na tumutugma sa tunay na laro . Kung ang mga piraso ay random na inilagay, ang mga eksperto ay hindi mas mahusay sa muling pagtatayo ng board kaysa sa mga baguhan.
Kay Horstmann at ang kanyang 1500 salita sa kung paano maging isang mas mahusay na Java programmer - 2
Kaya naman sinagot ko ang tanong mula sa sulat nang eksakto sa paraang ginawa ko. Ang aking background ay nasa aktwal na programming, hindi pakikipanayam, kaya katutubo kong idinagdag ang nawawalang keyword at gumawa ng "maling" konklusyon. Gusto kong isipin na tatanggapin pa rin ako pagkatapos kong ipaliwanag kung ano ang nangyari at kung bakit hindi ako magsusulat ng code tulad ng halimbawa nang wala ang aking karagdagan. Marahil, kung ang gayong sagot ay hindi nasiyahan sa kanila, ako mismo ay hindi nais na magtrabaho sa kanila.
Ngayon, hindi ko iniisip na ang pag-aaral para sa mga pagsusulit sa sertipikasyon o mga panayam ay magiging mas mahusay kang programmer. Natitiyak ko rin na hindi rin gagana ang pagbili ng isang malaking bilang ng mga libro sa programming at pagkatapos ay basahin ang mga ito mula sa pabalat hanggang sa pabalat (bagama't ako, bilang may-akda ng mga mismong aklat na ito, ay hindi nais na aminin ito!). Sa katunayan, ang isang talagang mahusay na paraan upang maging isang mas mahusay na programmer ay ang lumikha ng mas maraming software hangga't maaari . Paminsan-minsan ay nagtuturo ako ng panimulang kurso sa computer science sa aking unibersidad. Ito ang pinakamahirap na kursong naituro ko. Mas mahirap pa sa kursong graduate. Noong una akong nagsimulang magtrabaho bilang isang batang propesor, masigasig akong nagbigay ng mga lektura sa mga mag-aaral kung saan masunurin kong sinasaklaw ang mga isyu sa programming, tulad ng pagkakaiba sa pagitan ng mga loop forat whileloop do. Pagkatapos ay nagtalaga ako sa mga mag-aaral ng apat na tatlong linggong proyekto. At ang paksang ito ay itinuro sa ganitong paraan mula pa noong simula ng panahon sa lahat ng unibersidad. Pagkatapos ng aking unang pagtatangka, nagreklamo ang instruktor ng kursong ikalawang semestre na karamihan sa mga dati kong estudyante ay hindi talaga naiintindihan kahit simpleng mga loop pagkatapos ng kanilang unang semestre ng programming. At ang gayong mga resulta ay naganap din mula noong simula ng panahon. Tandaan ang artikulong "FizzBuzz o bakit hindi makapag-program ang mga programmer" ? Kapag natutunan mo ang isang banyagang wika, karamihan sa mga gawain ay pagsasanay at pagsasanay, hindi teorya. Napakahalaga na "itulak" ang kaalaman sa hindi malay. Dumarating ang punto ng pagbabago kapag hindi mo na kailangang aktibong isipin ang bawat cycle, o (sa kaso ng French), ang bawat hindi regular na pandiwa. Kung dumating na ang sandaling ito, handa ka nang lumipat sa susunod na antas. At walang rebolusyonaryo sa ideyang ito.
Kay Horstmann at ang kanyang 1500 salita sa kung paano maging isang mas mahusay na Java programmer - 3
Ang susi sa lahat ay instant feedback. Naniniwala ang ilang psychologist na marami tayong magagawa sa pag-aaral na nakabatay sa computer gamit ang agarang feedback. Halimbawa, sa isa pang klasikong eksperimento, ang mga naghahangad na trainee pilot ay sumailalim sa isang sesyon ng pagsasanay kung saan kinakailangan nilang tingnan ang panel ng instrumento nang paulit-ulit at ilarawan ang paggalaw ng eroplano. Kasabay nito, nakatanggap sila ng instant feedback na nagsasaad kung ginawa nila ito nang tama o hindi. Pagkatapos ng dalawang oras na pagsasanay, nalampasan nila ang mga bihasang piloto. Siyempre, hindi ito nangangahulugan na maaari silang ipadala kaagad sa isang tunay na paglipad, ngunit hindi na sila kinakabahan sa iba't-ibang at maraming dial sa panel ng instrumento. Kaya, kung nagsisimula ka pa lamang mag-aral ng Java, ang paggawa ng maraming pagsasanay para sa pagsasanay ay ang pinakamagandang ideya. Mayroong isang malaking bilang ng mga website at mga online na kurso na awtomatikong sinusuri ang kawastuhan ng iyong code. Pumili ng isa na nag-aalok ng mga tunay na hamon sa halip na gobbledygook. Pagkatapos ng lahat, gusto mong maging mahusay ang iyong subconscious sa code na talagang isusulat mo sa pagsasanay. Ito ang dahilan kung bakit hindi ako masyadong mahilig sa mga halimbawa ng programming na gumagamit ng mga gawa-gawang sitwasyon, tulad ng mga klase ng hayop na may mga pamamaraan na umuuhaw at tumatahol. Pagkaraan ng ilang oras, ikaw ay makabisado ang mga pangunahing kaalaman sa programming. Upang lumipat sa susunod na antas, maaari kang magsulat ng ilang proyekto. Ilang taon na ang nakalilipas, tinanong ng portal ng InformIT ang mga karanasang programmer ng isang tanong: "Ano ang pinakamahusay na paraan para sa isang programmer na matuto ng bagong wika?" Kung ibubuod natin ang kanilang mga sagot, maaari nating tapusin ang sumusunod: "gamitin ang wikang ito sa iyong kasalukuyang proyekto." Kaya, isipin kung ano ang dati mong gustong ipatupad - at magpatuloy. Dalawampung taon na ang nakalilipas, noong napakabata pa ni Java,ng aking kaibigan at minsang co-author na si Gary Cornell at sinabing, “Kay, magsusulat tayo ng libro sa Java.” " Ang sagot ko ay wala talaga siyang alam o ako tungkol sa Java na ito, na sinagot niya: “So ano? May book deal na tayo." Walang magawa. Kinailangan naming magmadali dahil may iba pang nag-anunsyo ng nalalapit na pagpapalabas ng librong "Teach Yourself to Be a Java Dummy in 24 Hours" ... I think it was called something like that ( Kay ginagawang katatawanan ang "For Dummies" series of books - "para sa mga dummies" ang salitang "Dummy" ay maaaring isalin bilang "dummy" - tala ng tagasalin ). Upang matuto ng bagong wika, nagsimula ako sa mga proyekto - pagsulat ng isang programa na lumikha ng isang user interface para sa pagpaplano ng pagreretiro, at pagkatapos ay isang programa na nakakonekta sa isang site ng lagay ng panahon at nagpakita ng ulat ng panahon. Pagkatapos nito - isang programa na ginagaya ang paggalaw ng mga kotse sa highway. Sa oras na iyon, ang mga programang ito ay talagang kamangha-manghang!java.awtjava.netat mga thread ( threads). At kailangan kong matutunan kung paano aktuwal na gawin ito, hindi lamang kung ano ang sinasabi ng dokumentasyon. Sa oras na iyon ang mga ito ay ganap na magkakaibang mga bagay. Kaya naman naging hit ang Core Java [1]: hindi ito para sa mga dummies.
Kay Horstmann at ang kanyang 1500 salita sa kung paano maging isang mas mahusay na Java programmer - 4
Sa oras na iyon, ang pag-aaral ng Java ay mas mahirap. Wala kaming mga site tulad ng Stack Overflow ( at wala rin kaming JavaRush - tala ng editor ). Sa puntong ito, nagpapatuloy ako upang bumalangkas ng sumusunod na payo para sa pagpapabuti ng iyong "kasanayan" sa programming. Kaya, kapag gumawa ka sa iyong sariling proyekto, tiyak na ma-stuck ka sa isang lugar. Sa kasong ito, pumunta sa isang dalubhasang forum at subukang maghanap ng mga sagot. Maniwala ka sa akin, ito ay isang magandang ideya . Una, magtatanong ka ng mga tanong na maraming beses nang naitanong noon. Ngunit sa lalong madaling panahon magkakaroon ka ng kaalaman at ang iyong mga katanungan ay magiging mas kakaiba. Ito ay isang kamangha-manghang paraan upang matuto! Siyempre, hindi lang ito tungkol sa pagkopya-paste ng isang piraso ng code at pagtatanong: “Ano ang dapat kong gawin dito ngayon?” Kailangan mong makarating sa ilalim nito, ipaliwanag kung anong mga pagtatangka ang nagawa mo na upang malutas ang problema bago ka makaalis. Sa pamamagitan ng paraan, sa karamihan ng mga kaso, habang bumubuo ako ng isang katanungan sa pagsulat, hinahanap ko ang sagot sa aking sarili at ang kailangan ko lang gawin ay sabihin sa aking sarili: "Ano ang problema dito, ito ay walang utak" bago pa man ako magpadala ng tanong . Ngunit kahit na hindi ito mangyari... Maniwala ka sa akin, ang mga maalalahang tanong ay may posibilidad na makaakit ng mga maalalahaning sagot. Tandaan lamang na ibalik ang pabor sa lipunan sa pamamagitan ng pagsagot sa mga maalalahang tanong ng ibang tao. Ang parehong pagtatanong at pagsagot sa mga nag-iisip na tanong ay ginagawa kang isang mas mahusay na programmer. "So, paano ang mga libro? - tanong mo. "Talaga bang naging ganap at hindi na mababawi ang mga ito salamat sa Google at Stack Overflow ?" Sa tuwing nag-navigate ako sa isang bagong teknolohiya, naniniwala ako na ako ay isang matapang na tao at kayang lampasan ang lahat ng paghihirap nang mag-isa. Ngunit ang isang oras ng walang kabuluhang pagdurusa ay nagbibigay daan sa isang oras ng katinuan - at bumili ako ng libro. Ang mga teknikal na libro ay isang nakamamanghang bargain sa mga araw na ito. Kung magbabayad ako ng $40 para sa isang e-book at isang tanong lang ang masagot nang mabilis, naibalik ko na ang aking pera. Ayaw kong biguin ang aking mga kapwa manunulat, ngunit hindi pa ako nakakabasa ng teknikal na libro mula simula hanggang matapos. Nagsisimula ako kung saan sa tingin ko ang aking problema at ang solusyon nito ay nakasulat, at nagbabasa ako hanggang sa maunawaan ko kung paano ito lutasin. Para sa kadahilanang ito, kasalukuyang sinusubukan kong magsulat ng mga libro na maaaring basahin sa ganitong paraan. Ang pamamaraang ito ay nagbunga ng seryeng “Para sa mga Walang Pasensya.” At sa puntong ito dapat akong huminto - lumampas ako sa limitasyon ng editoryal na 1500 salita. Idagdag ko lang iyon upang maging isang mas mahusay na programmer, magsimula sa pamamagitan ng pagkilala na maraming antas ng kaalaman.
  1. Una, "hilahin" ang mga pangunahing istruktura ng wika sa iyong hindi malay, iyon ay, dalhin ang kanilang kaalaman sa awtomatiko sa pamamagitan ng paglutas ng isang malaking bilang ng mga pagsasanay.

  2. Magsimulang magtrabaho sa mga tunay na proyekto na interesado ka sa lalong madaling panahon.

  3. Pagkatapos ay sumali sa isang komunidad kung saan maaari kang magtanong at sumagot ng mga tanong.

  4. Kapag nagawa mo na ito, makakapagsalita ka nang may kaalaman at karanasan sa mga panayam. At hindi talaga mahalaga kung lutasin mo ang ginawang puzzle.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION