JavaRush /Java блогу /Random-KY /Кей Хорстманн жана анын 1500 сөзү, кантип жакшыраак Java ...

Кей Хорстманн жана анын 1500 сөзү, кантип жакшыраак Java программисти болуу керек

Группада жарыяланган
Сиз Cay S. Horstmann деген ысымды уккандырсыз . Ал Java дүйнөсүндөгү белгилүү адам жана биздин сүйүктүү тorбиз боюнча көптөгөн китептердин автору. Алардын арасында классикалык курс "Негизги Java" (орус тorнде басылып чыккан эки томдук китеп "Java. Профессионалдык китепкана" ) жана "Сабырсыз үчүн Java" (орус тorнде басылып чыккан "Java SE" кыскача мазмуну менен сериясы бар. 8. Киришүү курсу” жана “Java SE 8. Негизги курс” ). Ал «Java чемпиону» деген сыймыктуу наамды алып жүрөт. Ал эми бул шилтемеден анын эски мектебинин веб-сайтынан кызыктуу маалыматтарды таба аласыз.
Кей Хорстманн жана анын 1500 сөзү, кантип жакшыраак Java программисти болуу керек - 1
Биз сиздердин назарыңыздарга InformIT ресурсу үчүн макаланын котормосун сунуштайбыз , анда Кей жаңы баштаган жана улантып жаткан программисттерге өз кесибин кантип жакшыртуу боюнча бир нече кеңештерди айткан. Бир күнү, InformITтин редактордук директору Дженнифер Бортел менден кантип жакшыраак Java программисти болуу керектиги жөнүндө бир катар жазууну суранды. Ал мага, чыдамсыздык үчүн негизги Java китебинин автору, бул жөнүндө бир нерсе бorшим керек деп сунуштады. "Оңойраак эч нерсе жок, жөн эле китеп сатып ал" деп ойлодум башында. Бирок бул жооп ишке ашкан жок, анткени мен аны 1500 сөзгө батырышым керек жана ушул убакка чейин алардын 62си гана бар * ( албетте, макаланы которууда биз сөздөрдүн санын сактоого аракет кылган жокпуз - болжол менен котормо ). Мен жакында иштеп чыгуучу досумдан электрондук кат алдым, ал интервьюда төмөнкү code эмне үчүн жип коопсуз эмес экенин сурашкан:
class ThreadSafeClass extends Thread
{
     private static int count = 0;

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

     public synchronized void decrement()
     {
         count--;
     }
}
Менин досум бул мисалдагы code жипти коопсуз деп чечти, мен аны менен макул болдум, экинчи ыкмада бир ачкыч сөз жетишпей калганын staticжана ал киргизилгенден кийин кирүү класс an objectинин орнотулган кулпусу тарабынан көзөмөлдөнөт. Мен ошондой эле бул интервью үчүн жакшы суроо эмес экенин айттым, анткени эгер сизге жип эсептегич керек болсо, аны колдонгонуңуз жакшы AtomicInteger. Бирок түн жарымында ойгонуп кеттим: бул сөз кандайдыр staticбир себеп менен калып калсачы? Балким, кандайдыр бир тымызын интервью алуучу бул мисалды талапкерлерди адаштыргыдай кылып түзүшкөнбү? Ошентип, мен бул суроону берген иштеп чыгуучуга жооп жаздым жана мен мурда жаңылып жатканымды айттым: интервью суроолору деп аталган параллелдүү ааламда бул суроонун жообу: "Экинчи ыкма an objectтин кулпусун камтыйт". Бул жооптон кийин ал жигит YouTube каналын иштетеби деп сурады, анда мен интервью көйгөйлөрүн кантип чечүүнү үйрөтөм. Аттиң, мен муну кылбайм. Мен информатикадан сабак берем жана китеп жазам, бирок менин негизги максатым "маектешүү маселелерин чечүүчүлөрдү" жакшыраак кылуу эмес, студенттеримди мыкты программист кылып чыгаруу. Бир жолу Питер Норвиг ( жасалма интеллект тармагындагы америкалык окумуштуу, Google изилдөө директору – болжол менен транс. ) өзүнүн блогуна эң сонун макала жазган. Ал 24 саат же 21 күндүн ичинде Java тorн үйрөтөм деп убада кылган китептер жөн эле күлкүлүү экенин айтты. Аны менен макул болбоо кыйын: кандайдыр бир тармакта адис болуу үчүн 10 жыл, балким 10 000 саат талап кылынат. Ал эми эксперттер маалыматты жаңыдан башкача иштетилери белгилүү. Классикалык экспериментте тажрыйбалуу жана башталгыч шахматчыларга бир нече секундага фигуралардын белгилүү жайгашуусу бар шахмат тактасын көрсөтүп, андан соң аны жашырып, фигураларды кандай болсо, ошондой жайгаштырууну суранышкан. Жаңы баштагандар тапшырманы жакшы аткара алышкан жок, бирок эксперттер эч кандай кыйынчылыктарга дуушар болгон жок. Бирок бир гана маанилүү шартта: фигуралардын жайгашуусу чыныгы оюнга дал келиши керек . Эгерде кесимчелер туш келди жайгаштырылса, анда адистер тактайды кайра курууда жаңыдан жакшыраак болушкан эмес.
Кей Хорстманн жана анын 1500 сөзү, кантип жакшыраак Java программисти болуу керек - 2
Ошон үчүн каттын суроосуна мен так ошондой жооп бердим. Менин бorмим интервью эмес, реалдуу программалоодо, ошондуктан мен инстинктивдүү түрдө жетишпеген ачкыч сөздү кошуп, "туура эмес" жыйынтык чыгардым. Мен эмне болгонун түшүндүргөндөн кийин дагы жумушка алынат деп ойлогум келет жана эмне үчүн менин кошумчамсыз мисал сыяктуу codeду эч качан жазбайм. Балким, мындай жооп аларды канааттандырбаса, мен өзүм алар менен иштешүүнү каалаbyte белем.
Эми, менимче, сертификация экзамендерин же интервью алуу үчүн окуу сени мыкты программистке айлантат деп ойлобойм. Программалоо боюнча көп сандагы китептерди сатып алып, анан аларды башынан аягына чейин окуу да майнап чыкпайт деп ишенем (бирок мен дал ушул китептердин автору катары муну моюнга алгым келбейт!). Чынында, мыкты программист болуунун эң жакшы жолу - мүмкүн болушунча көп программалык камсыздоону түзүү . Мезгил-мезгor менен университетимде информатика сабагынан сабак берем. Бул мен окуткан эң татаал курс. Бул аспирантурадан да кыйын. forМен биринчи жолу жаш профессор болуп иштей баштаганда, студенттерге тырышчаактык менен лекцияларды окуп, анда цикл менен whileциклдин айырмасы сыяктуу программалоо маселелерин кылдаттык менен окучумун do. Андан соң студенттерге үч жумалык төрт долбоорду тапшырдым. Ал эми бул предмет жаралгандан бери бардык университеттерде ушундайча окутулуп келет. Менин биринчи аракетимден кийин, экинчи семестрдин инструктору менин мурунку студенттеримдин көбү программалоонун биринчи семестринен кийин жөнөкөй циклдерди деле түшүнбөй калганына нааразы болду. Жана мындай жыйынтыктар да башынан бери болуп келатат. "FizzBuzz же эмне үчүн программисттер программалай алbyte" деген макаланы эстейсизби ? Чет тorн үйрөнгөндө, көпчүлүк тапшырмалар теория эмес, көнүгүү жана практика болуп саналат. Бorмди аң-сезимге "түртүү" өтө маанилүү. Ар бир цикл, же (француз тorнде) ар бир туура эмес этиш жөнүндө жигердүү ойлонуунун кереги жок болгондо бурулуш учур келет. Эгер бул учур келип калса, анда сиз кийинки деңгээлге өтүүгө даярсыз. Жана бул идеяда революциялык эч нерсе жок.
Кей Хорстманн жана анын 1500 сөзү, кантип жакшыраак Java программисти болуу керек - 3
Бардык нерсенин ачкычы - бул тез пикир. Кээ бир психологдор биз компьютердик окутуу менен тез жооп кайтаруу менен көп нерсени жасай алабыз деп ишенишет. Маселен, дагы бир классикалык экспериментте учкуч болууну каалагандар машыгуудан өтүштү, анда алар приборлор панелин кайра-кайра карап, учактын кыймылын сүрөттөө талап кылынган. Ошол эле учурда, алар туура же туура эмес кылганын көрсөтүү менен дароо пикир алышты. Эки сааттык машыгуудан кийин алар тажрыйбалуу учкучтардан озуп чыгышты. Албетте, бул аларды дароо эле чыныгы рейске жиберууге болот дегенди билдирбейт, бирок алар приборлор панелиндеги ар турдуу жана кеп сандаган циферблаттар мындан ары тынчсызданбай калышты. Демек, эгер сиз Java тorн жаңыдан үйрөнүп жатсаңыз, анда практика үчүн көптөгөн көнүгүүлөрдү жасоо эң жакшы идея. Кодуңуздун тууралыгын автоматтык түрдө текшерген көптөгөн веб-сайттар жана онлайн курстар бар. Gobbledygook эмес, чыныгы кыйынчылыктарды сунуш кылган бирин тандаңыз. Акыры, сиз өзүңүздүн аң-сезимиңиздин иш жүзүндө жаза турган codeду жакшы бorшин каалайсыз. Ошондуктан мен ойлоп табылган кырдаалдарды колдонгон программалоо мисалдарын, мисалы, мияулоо жана үрө турган жаныбарлардын класстарын колдонууга анча деле кызыкпайм. Бир нече убакыт өткөндөн кийин, сиз программалоонун негиздерин өздөштүрөсүз. Кийинки деңгээлге өтүү үчүн, сиз бир нече долбоорлорду жаза аласыз. Бир нече жыл мурун InformIT порталы тажрыйбалуу программисттерге: "Программист жаңы тилди үйрөнүүнүн эң жакшы жолу кайсы?" Эгерде биз алардын жоопторун жыйынтыктай турган болсок, анда төмөнкүдөй жыйынтык чыгарсак болот: "Учурдагы долбооруңузда бул тилди колдонуңуз". Андыктан, эмнени ишке ашыргыңыз келгени жөнүндө ойлонуп көрүңүз жана алдыга кетиңиз. Жыйырма жыл мурун, Java абдан кичинекей кезинде,менин досум жана бир кездеги биргелешип автору Гари Корнелл мага телефон чалып: "Кэй, биз Java боюнча китеп жазабыз" деди. Менин жообум, ал дагы, мен дагы бул Java жөнүндө эч нерсе билбейбиз, ал жооп кайтарды: «Эмне? Бизде мурунтан эле китеп келишими бар». кыла турган эч нерсе жок. Шашылышыбыз керек болчу, анткени башка бирөө "24 сааттын ичинде өзүңүздү Java муляжы болууга үйрөтүңүз" китебинин жакында чыгарын жарыялаган ... Менимче, ал ушундай деп аталды ( Кэй "Даммилер үчүн" китептер сериясын тамашалайт , деген сөздү "Муляж" деп которсо болот - котормочунун эскертүүсү ). Жаңы тилди үйрөнүү үчүн мен долбоорлордон баштадым - пенсиялык пландаштыруу үчүн колдонуучу интерфейсин түзгөн программаны жазуу, андан кийин аба ырайы сайтына туташып, аба ырайынын отчетун көрсөткөн программа. Андан кийин - трассадагы унаалардын кыймылын окшоштурган программа. Ошол учурда, бул программалар жөн эле укмуш болчу!java.awtjava.netжана жиптер ( threads). Жана мен documentацияда айтылгандарды эле эмес, бул ишти кантип жасоону үйрөнүшүм керек болчу. Ал кезде булар таптакыр башка нерселер болчу. Ошондуктан Core Java [1] хит болду: ал муляждар үчүн эмес.
Кей Хорстманн жана анын 1500 сөзү, кантип жакшыраак Java программисти болуу керек - 4
Ал убакта Java үйрөнүү бир топ кыйын болчу. Бизде Stack Overflow сыяктуу сайттар болгон эмес ( жана бизде JavaRush да болгон эмес - editor’s note ). Ушул жерден мен сиздин программалоо жөндөмүңүздү өркүндөтүү боюнча төмөндөгү кеңештерди түзүүгө өттүм. Ошентип, сиз өзүңүздүн долбооруңуз менен иштегениңизде, сөзсүз түрдө бир жерде тыгылып каласыз. Бул учурда, адистештирилген форумга барып, жооп табууга аракет кыл. Мага ишен, бул сонун идея . Биринчиден, сиз буга чейин көп жолу берилген суроолорду бересиз. Бирок жакында сиз бorмге ээ болосуз жана суроолоруңуз өзгөчө болуп калат. Бул үйрөнүүнүн укмуштуу жолу! Албетте, бул жөн гана codeдун бир бөлүгүн көчүрүп чаптоо жана: "Муну менен эмне кылышым керек?" Сиз анын түбүнө жетишиңиз керек, тыгылып калганга чейин көйгөйдү чечүү үчүн кандай аракеттерди жасаганыңызды түшүндүрүңүз. Баса, көпчүлүк учурда суроону жазуу жүзүндө түзүүдө мен өзүм жооп табам жана мен суроону жөнөтө электе эле: “Бул жерде эмне көйгөй бар, бул акылга сыйбаган нерсе” деп өзүмө айтам. . Бирок андай болбосо да... Мага ишенип койгула, ойлонулган суроолор ойлонулган жоопторду тартат. Башка адамдардын суроолоруна жооп берүү менен социалдык ырайымдуулукту кайтарууну унутпаңыз. Суроо берүү жана ойлонулган суроолорго жооп берүү сизди мыкты программист кылат. «Ошентип, китептер жөнүндө эмне айтууга болот? – деп сурайсың. "Алар чындап эле Google жана Stack Overflow аркасында толугу менен жана кайра кайтарылгыс эскирдиби ?" Качан гана жаңы технологияга багыт алсам, мен кайраттуу адам экениме жана бардык кыйынчылыктарды жалгыз жеңе аларыма ишенем. Бирок бир сааттык маанисиз азап бир сааттык акыл-эске бошотот - мен китеп сатып алам. Техникалык китептер бүгүнкү күндө укмуштуудай соода болуп саналат. Эгерде мен электрондук китеп үчүн 40 доллар төлөп, бир гана суроого тез жооп алсам, анда мен акчамды кайтарып алганмын. Мен жазуучуларымдын көңүлүн калтырганды жаман көрөм, бирок техникалык китепти башынан аягына чейин окуган эмесмин. Мен өзүмдүн көйгөйүм жана анын чечими жазылган жерден баштайм жана аны кантип чечүү керектигин түшүнгүчө окуйм. Ошол себептүү учурда ушундай окула турган китептерди жазууга аракет кылып жатам. Бул ыкма "Сабырсыздар үчүн" сериясын пайда кылган. Бул учурда мен токтошум керек - 1500 сөздүн редакциялык чегинен ашып кеттим. Кошумчалай кетейин, жакшы программист болуу үчүн бorмдин көп деңгээли бар экенин түшүнүү менен баштаңыз.
  1. Биринчиден, негизги тилдик структураларды өзүңүздүн аң-сезимиңизге "тартыңыз", башкача айтканда, көп сандагы көнүгүүлөрдү чечүү менен алардын бorмин автоматташтырууга алып келиңиз.

  2. Мүмкүн болушунча тезирээк сизди кызыктырган реалдуу долбоорлордун үстүндө иштей баштаңыз.

  3. Анда сиз суроолорду берип, жооп бере турган коомго кошулуңуз.

  4. Муну кылгандан кийин, интервьюларда бorм жана тажрыйба менен сүйлөй аласыз. Жана сиз ойлоп табылган табышмакты чечкениңиз маанилүү эмес.
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION