JavaRush /Java блогу /Random-KY /Келиңиз, башынан баштайлы же 'Салам, Java World!'
articles
Деңгээл

Келиңиз, башынан баштайлы же 'Салам, Java World!'

Группада жарыяланган
Мен бул макаланы адаттан тыш, бир караганда, чегинүү менен баштагым келет. Эмне үчүн так кийинчерээк белгилүү болот.
Келиңиз, башынан баштайлы же Салам, Java дүйнөсү!  - 1
Андыктан, келгиле, кимдир-бирөөнү элестетип көрөлү. Бул кимдир бирөө тоо лыжа тебүүнү өздөштүргүсү келет. Бул үчүн ал төмөнкү кадамдарды жасайт:
  • Инструкторлор, окуу китептери, окуу куралдары ж.б. - Мунун баары жамандыктан. Лыжа тебүүнү өз алдынча үйрөнө аласыз. Мындан тышкары, мектепте ал лыжа тебүүнү жакшы үйрөнгөн. Ошого жараша бorмдүү адамдардын бардык кеңештери көңүл бурулbyte.

  • Эң сонун жабдуулар тандалды. Эксперттик деңгээлден төмөн эмес. Бутуңузду ооруткан катуу өтүк. Бүгүш үчүн укмуштуудай күч-аракетти талап кылган катуу лыжалар, кимдир бирөөнүн физикалык даярдыгынын деңгээлинен алда канча ашат. Мейли, ж.б.

  • Сыноочу трек... айталы, гигант слалом боюнча Дүйнөлүк кубоктун этабын өткөргөн трек. Бул окуу үчүн гана туура.
  • Ошол эле маанайда уланта бер.
Демек, бул жерде суроо. Муну ким деп атайсыз? Жеке өзүм, тоо лыжасы менен 20 жылдай тааныш болгон адам катары мен аны (жана бул дагы эле абдан жумшак!) - үмүтсүз деп атайм. Бул ыкма менен эч нерсе үйрөнүү таптакыр мүмкүн эмес. Бирок зыян үчүн ишенимдүү жол. ЭҢ ишенимдүү нерсе - лыжа тебүү идеясын биротоло таштоо. Бул баалоодо сиз мени менен макул болосуз деп ойлойм. Кандай болгон күндө да, бул Кимдир бирөө ага жагымсыз нерсени күтпөйт деп ишенем. Эми башка бирөөнү элестетип көрөлү. Ал, айталы, информатика студенти болсун. Ал C++, C#, Паскаль тилдеринде бир аз бorмге ээ. Ал Java тorн үйрөнгүсү келет. Анын иш-аракеттери:
  • Анын бorм деңгээлине туура келген адабияттар (ачыгын айтканда нөлдүк) шыпырылып жатат. Аталган C++, C# жана OOP теориясы менен бир аз таанышуунун негизинде.
  • Эң күчтүү программалоо чөйрөсү алынат. Eclipse же NetBeans дейли. Баарын өзү жасайт, жөн гана бир баскычты басыңыз.
  • Сынамык тиркеме катары биз тандайбыз... жакшы, чат дейли. Кардар-serverдик тиркеме, апплет түрүндөгү кардар бөлүгү, serverдик бөлүгү - веб-сервис же эң начарсы сервлеттер. Окуу үчүн гана туура.
Суроо. Муну ким деп атайсыз? Парадокс эмне экенин билесизби? Чындыгында, бул учурда калыс баа берүүлөр кыйла азыраак болот. Кырдаалдар бардык жагынан бирдей экендигине карабастан. Экинчи учурда ден соолук жана өмүр үчүн кесепеттери азыраак өлүмгө алып келбесе. Балким, бул көйгөй? Кырдаалдар чынында эле абдан окшош. Мен аларды ошол эле стилде атайын сүрөттөп бердим. Жана таң калыштуу нерсе: эгерде биринчинин абсурддугу айкын болсо, анда экинчи сценарийден кийин кооптуу сандагы жаңы иштеп чыгуучулар келет. Java тorн өздөштүрүү MIDletтерди, маалымат базалары үчүн кардарларды, чаттарды жазуудан, сервлеттердин негизинде веб-сайттарды түзүүдөн башталат... Сиз көпкө уланта аласыз. Бирок кеп баары бир ачык-айкын. Ошол эле учурда башталгыч деңгээлдеги адабияттар жек көрүү менен четке кагылган. Муну оку? Мага? Ооба, мен үч жылдан бери C++ тorнде жазып жатам! (Параметрлер Паскальда, жада калса визуалдык базада.) Жана мен OOP билем! Ооба, жалпысынан. Анда эмне болот? Анан бул:
  • 8 byte массивди кантип узундукка айландыруу керек?
  • Эмне үчүн бул болуп жатат NoClassDefFoundError?
  • Эмне үчүн мен Eclipse'де ( NetBeans/IDEA/JBuilder) тиркемени ишке киргизем, баары жакшы, бирок ансыз мен терем java HelloWorld.classжана ката кетти?
  • Эмне үчүн бузулат ClassNotFoundException?
  • Эмне үчүн китепкана жок? Мен буга чейин classes.zip сайтына койдум, бирок мунун баары эч кандай майнап чыкпайт!
  • Эмне үчүн мен an objectтердин массивин түзөм, бирок массивдин элементин колдонууга аракет кылганда мен алам NullPointerException?
  • Эмне үчүн ...?
  • Эмне үчүн ...?
  • Эмне үчүн ...?
Эмне үчүн эмне үчүн? Бирок, анткени Java C++ же Паскаль эмес. Жана Perl эмес. Бул тилдерди билүү көп учурда жардам бербейт, бирок ошондой эле тоскоолдук кылат. Бул тилдер такыр башка идеологияга ээ болгону үчүн. Бирок сырткы окшоштук адаштырууда. Албетте, бул "эмне үчүн" жана "кантип" деген суроолордун жооптору китептерде бар. Эң негизги деңгээлдеги адабиятта. Бирок аны окуу жалкоо (вариант: уят, убакыт жок ж.б.). Мен жакшы C++ адистери тарабынан Java тorне которулган көптөгөн стереотиптерди билем. Акыркы бир мисал: конструктордо эч качан өзгөчөлүктү таштабаш керек. Неге? Ооба, анткени C++ тorнде мындай an objectтин абалы аныкталbyte. Демек, эс тутумдун агып кетиши пайда болот. Явада таштанды жыйноочу бар болгондуктан, принципиалдуу түрдө мындай көйгөй жок. Бирок мындай жагдайлардан качууга аракет кылгандар бар. Жөн эле сиңип калган стереотип боюнча. Эң жаманы, бул аракеттердин натыйжасында code бир топ татаалдашып баратат. Синтаксисти үйрөнүү оңой. Жана толугу менен жетишсиз. Тилдин идеологиясы алда канча маанилүү. Ал эми аны эң натыйжалуу өздөштүрүү үчүн эң башынан баштоо керек. Эмне үчүн так жана кантип? Жана бул дагы бир суроо. Ошентип. Кайдан жана кантип баштоо керек. Бул эмнеге жетүүнү каалап жатканыңыздан көз каранды. Эгер сиз чебер codeдоочу маймыл болгуңуз келсе, дээрлик бардык нерседен баштасаңыз болот. Эгер сиз кесипкөй болууну кааласаңыз, анда иштер бир аз татаалыраак. Менин тажрыйбам төмөндөгүлөрдү айтууга негиз берет. Профессионал иштеп чыгуучунун "codeердин" айырмасы - ал эмне болуп жатканын түшүнөт. Ал кнопкаларды басууга караганда бир аз көбүрөөк кылат. Күчтүү чөйрө абдан жакшы жардам берет. Ансыз кыла алгандар үчүн. Бирок бул көбүнчө аны баштагандардын жалгыз куралы. Ал эми ал жок болгон учурда codeдоочу маймылдын мааниси нөлгө барабар. Анткени басуу үчүн баскычтар жок. Жалпысынан алганда, баскычты басуу чындап коркунучтуу формаларды алышы мүмкүн. Менин кесиптештеримдин бири Java тorнде жазылган продуктуну көрдү. Аны орнотуу боюнча нускамалар: “JBuilderди дисктен орнотуу...” деген сөздөр менен башталган. Эгерде иштеп чыгуучулар өнүмдү иштеп чыгуу чөйрөсүсүз иштете албаса, анда анын кандай жазылганын ойлоп, титиреп кетем. Жок дегенде ышкыбоздор тарабынан жазылган. "Эмне болуп жатканын түшүндүмбү?" деп эмнени айткым келет? Бул адам төмөнкүлөрдү түшүнүшү керек дегенди билдирет:
  • Виртуалдык машина деген эмне жана ал эмне үчүн керек?
  • Виртуалдык машинанын көз карашынан алганда класс деген эмне.
  • Пакет деген эмне?
  • Китепкана деген эмне?
  • Виртуалдык машина класстарды кантип издейт жана жүктөйт; класс жүктөгүч деген эмне жана ал кантип иштейт; демейки боюнча канчасы бар; класс жолу деген эмне.
Жана башкалар. жана башка. Тизме улана берет. Сураныч, мен иштеп чыгуучунун өзүнө тиешелүү бorмди камтыбаганымды эске алыңыз. Жип деген эмне, OOP көз карашы боюнча класс деген эмне жана ал an objectтен эмнеси менен айырмаланат, макет менеджерлери кандай иштешет - АР БИР иштеп чыгуучу мунун баарын бorши керек. Мен санап өткөндөрдүн баары техникалык жактан көбүрөөк. Бирок көп учурда аларды билүү эмне туура эмес иштеп жатканын түшүнүү үчүн абдан маанилүү экени көрүнүп турат. Турмуштан мисал. XML менен иштөө үчүн xalan деп аталган китепкана бар. Ал бир нече javax.xml... пакеттерин камтыйт - талдоочулар, трансформаторлор ж.б. Бул китепкана абдан популярдуу. Көйгөй дал ушул пакеттер 1.4 versionсынан бери J2SDKде бар. Суроо. javax.xml.transform.stream.StreamSource классына китепканадан киргенде кайсы класс жүктөлөт, эгер xalan класс жолунда да бар болсо - китепкана же J2SDK? Бул суроого жооп берүү үчүн класс жүктөгүч кандай иштээрин бorшиңиз керек. Мен бир жолу форумдардын биринде төрт күндүк талкууну көрдүм, ал акыры бул маселеге келип түштү. Код так иштеген жок, анткени жүктөгүч андан күтүлгөн классты алган эмес. Мен эмне кылып жатам? Бул жерде бир нерсе: иштеп чыгуу чөйрөсү канчалык күчтүү болсо, ал иштеп чыгуучуга ошончолук көп жардам берет - ал ошончолук аз ойлонушу керек. Бул эмитен эле, кандай жаман. Маймылга ушунчалык жакын. Бул канчалык парадоксалдуу көрүнбөсүн, биринчи жыйынтыкка алып келет:

Корутунду 1. Java тorн күчтүү чөйрөсүз үйрөнүүнү баштоо сунушталат.

Мен блокнот деңгээлиндеги редакторлордо жазууну жактабайм. Бирок мен муну бир гана себеп менен кылбайм - аларда, эреже катары, синтаксистик бөлүп көрсөтүү жок. Бул терс таасирин тийгизбеген укмуштуудай ыңгайлуу нерсе. Сиз Notepad++ сыяктуу нерсени колдонсоңуз болот , ал Java синтаксисин түшүнөт жана, демек, бекер. Мисалы, менде ал үчүн атайын системада катталган .java файл түрү бар. Ошентип, синтаксисти бөлүп көрсөтүү жана буйрук сабы бар текст редактору. Эки-үч күндүк азап - жана класстык жол деген эмне экенин, котормочу кантип ишке киргенин жана башка бир топ майда нерселерди түшүнүү - муну түшүнүү түбөлүккө кала берет. Андан ары. Менин тажрыйбам келечекте колдонуу үчүн бorмди алуу мүмкүн эмес деп айтууга негиз берет. Адабиятты ал жооп бере турган суроолор болгондо гана окуу керек деген мааниде. Эгер сиз китепти сурооңуз жок окусаңыз, анда маалымат бир жуманын ичинде жок болот. Мен муну абдан жакшы билем, анын ичинде өз тажрыйбамдан да. Мен бир жолу сервлеттер боюнча китепти беш жолу окуй баштадым. Мен өзүмдүн ишимде алар менен алектене баштаганга чейин, маалымат сиңген эмес. Жана бул обочолонгон окуядан алыс. Бир жолу, абдан узак убакыт мурун, болжол менен 8-10 жыл мурун, мен төмөндөгүлөрдү окугам, тилекке каршы, автору эсимде жок: Адамга жаңы программалоо тorн кантип үйрөтүү керек? Өтө жөнөкөй. Сиз ага тилди, бир нече тапшырмаларды жана минималдуу documentтерди беришиңиз керек. Андан кийин, бир-эки айдан кийин, ал жок дегенде ушул тилде жаза баштаганда, толук documentтерди бериңиз. Ал эки жумадан кийин детективдик роман сыяктуу окулат, андан кийин адам иштөөгө даяр болот. Мен бул сөзгө 100% кошулам. Эки айдан кийин бир жагынан майда-чүйдө маселелердин баары жоюлат. Аларга жооптор өз алдынча алынат, бул алардын баасын бир топ жогорулатат. Башка жагынан алганда, ачык-айкын суроолор пайда болот, алардын жооптору documentтер менен камсыз кылынат. Бул биринчисинен кем эмес парадоксалдуу көрүнгөн экинчи корутундуга алып келет:

Корутунду 2. Java тorн окуу китептерисиз үйрөнүү максатка ылайыктуу. Java API documentтери + Java окуу куралы - бул жетиштүү.

Java API documentтери милдеттүү болуп саналат. Мен аны жергorктүү, дискте сактоону сунуштайм. Сиз аны менен бир эмес, эки эмес, ал тургай он жолу байланышууга туура келет. Жеке мен ал жакка барбаган бир да күн болбойт. Мен ошондой эле Java окуу куралын жергorктүү түрдө сактоону сунуштайм. Бул окуу китебин толугу менен алмаштырган башталгыч деңгээлдеги маалымат. Бирок, ал жерде анын адилеттүү суммасы бар. Айтып коюшум керек, мен жумушта каралбаган тармактарда дагы өзүм үчүн жаңы нерсе табам. Көп окуу жаман. Сураныч болбосо, жооп жок. Кичине окуган да жаман. Алтын орто кайда? Мен бул эрежени карманамын: мен суроого жооп алдым окшойт дегенге чейин окуйм. 90% учурларда бул андай эмес. Бирок дал ушул учурда токтоп, өз алдынча улантуу эң жакшы. Алгачкы импульс алды, жана маселени өз алдынча чечүү алда канча көп берет. Албетте, бир нече убакыт өткөндөн кийин, ал адабият менен алектенүүгө татыктуу. Бирок, дагы бир жолу, башталгыч деңгээлдеги адабияттар үчүн. Мунун баары болбогон нерседей көрүнсө да, баштапкы бөлүмдөрдү окуп чыгуу керек. Жок дегенде жаңы нерсени үйрөнөсүң деп дээрлик кепилдик бере алам. Жана бул нерсе кийинчерээк өтө маанилүү болуп чыгышы мүмкүн. макул. Эмне жөнүндө жазаарыбызды түшүндүк окшойт. Кантип жазуу керек - ошондой эле. Бирок эмнени жазышым керек? Бул макала эмнеден башталганын эстеңиз. Мен заматта кабарлашуу системасын жазуу менен баштоо керекпи? Тандоо, албетте, сеники. Менимче, бул татыктуу эмес. Тапшырма канчалык татаал болсо, ошончолук көп суроолор пайда болот. Тажрыйба жок болсо, мындай бир катар суроолор аларды чечүү мүмкүн эмес деген сезимди пайда кылат, андан кийин өзүнүн кемчorгин, келесоолугун ж.б. Акыр-аягы, бул "тозокко..." деген чечимге алып келип, тилди үйрөнүүнү токтотушу мүмкүн. Ошол. керек болгонго караганда так карама-каршы натыйжага алып келет. Бул Java үчүн эмес, окуу процессинин өзүнө мүнөздүү. Бирок программалоону үйрөтүүгө келгенде эмнегедир муну унутуп коюшат. Ошол эле учурда, акырына чейин аткарылган кичинекей бир иш сапардын эң башында ташталган чоң системага караганда алда канча чоң канааттануу жана алда канча чоң бorм бере алат. Демек, үчүнчү тыянак: Корутунду 3. Java тorн өзүңүздүн учурдагы Java бorмиңизге адекваттуу тапшырмалардан баштоо сунушталат. Сиз Формула 1 унаасында машине айдоону үйрөнүүнүн кереги жок, Дүйнөлүк кубоктун трассасында тоо лыжа тебүүнү үйрөнүүнүн кереги жок. Ошол сыяктуу эле, сиз чоң нерсени жазуу менен Java-ны өздөштүрүүдөн баштабашыңыз керек. Мен амбиция талап кылып жатканын түшүнөм. Бирок бул учурда алар негизсиз. Жана канчалык акылга сыйбаган амбицияларыңыз көп болсо, профессионал болуу мүмкүнчүлүгүңүз ошончолук аз болот. Окуу жагынан укмуштуудай көрүнүш, таң калыштуусу, ар кандай форумдар. Аларды акылдуулук менен колдонсоңуз. Акылдуу - бул адаттагыдай эмес, тескерисинче кылуу керек дегенди билдирет. Тактап айтканда, суроо берүү үчүн эмес, аларга жооп берүү. Жетүүгө күчүң жетет. Мен өзүм баарын билем деп ойлосоңуз, абдан жаңыласыз. Ооба, мен көп нерсени билем. Бирок мен эч качан жолукпаган аймактар ​​бар. Же менде бар, бирок абдан аз. Менин практикамдын классикалык мисалы - сертификаттар менен иштөө: codeго кол коюу, коопсуз байланыштар ж.б. 1998-жылы, диссертациямды жазып жатканда, мен муну жасадым, бирок андан бери баары абдан өзгөрдү. Жылдар бою суроолорум топтолуп калды. Атүгүл кээ бир адабияттарды окуй баштадым. Бирок, мен жогоруда айткандай, келечекте колдонуу үчүн бorм ала албайсыз. Бул лом сыяктуу - бир кулагынан кирип, экинчи кулагынан чыгат. Башындагы тешиктен башка жыйынтык жок. Жана бул форумда tomcat менен SSL байланышы жөнүндө суроо берилгенге чейин уланды. Кээ бир көйгөйлөр бар болчу. Мына ушул суроо гана мени терең казууга түрттү. Ал эми кайрылуу болсо жооп да болот. Мен адамдын көйгөйү эмнеде экенин гана түшүнбөстөн, башка пайдалуу маалыматтарды да таптым. Акыры сертификаттар кандай иштээрин түшүндүм. Тиешелүү макала пландарда бар. Жана бул дайыма болуп турат. Мен, мисалы, GUI менен бир аз иштедим. Форумдагы бирөөнүн суроосунун натыйжасында гана TextLayout программасынын кээ бир мүмкүнчүлүктөрүн түшүндүм. Бул суроого чейин мен алар жөнүндө эч кандай түшүнүгүм жок болчу. Ошо сыяктуу эле, мен жакында JButton htmlди өзүнүн баш аты катары чечмелей турганын билдим. Буга чейин мен муну JLabel гана жасай алат деп ойлогом. Бул дагы форумга рахмат. Демек, биз суроолорго канчалык көп жооп берсек, ошончолук өзүбүз үйрөнөбүз. Ошон үчүн форумда адам отурса эч нерсе кылbyte дегенге кошула албайм. Бул так эмес жана биринчи кезекте, форумда эмне үчүн адам экендигинен көз каранды. Ал эми негизинен эмне кылат - суроо же жооп берүү. Чынында, сиз да сурасаңыз болот. Бирок ошондой эле акылдуу. Чечим сурабаңыз (айрыкча, мен кечээ эле жолуккан “Билгендер жооп бергиле, суроо бербегиле!” деген посткрипт менен), тескерисинче, кайра, тескерисинче, орнотууну сурангыла. кыймылдын багыты. Бул толугу менен түшүнүктүү, ал жөн гана тажрыйбасы жетишсиз, анткени үйрөнчүктөр үчүн жер казып түшүнүү кыйынга турат. Бул адамдын күнөөсү эмес, ал тургай, көйгөй эмес. Бул Жакшы. Ар ким муну башынан өткөрдү. Мен камтылган. Жеке мен үчүн адамдын бир нерсени үйрөнгүсү келгени алда канча маанилүү. Жана жөн гана жооп албастан, программалоо лабораториясын алгандан кийин беш мүнөттөн кийин гана унутуп. Мен ар дайым кыймылдын багытын айтып берем. Аны өзүм таанысам. А эгер мен билбесем, жок дегенде болжолдой алам. Анан мен сөзсүз түрдө жооп издейм. Бирок мен эч качан түз жооп бербейм, жок дегенде, эсимде жок. Баса, ошондон улам форумдардын биринен чыгып кеттим. Мен жетектөөчү суроолорду бере баштаганымда, алар мага жөн гана жооп берүү адат экенин бир ооздон түшүндүрүштү. Ал эми суроолорум менен мен андан ары кете алам. Форумдун деңгээли күтүлбөгөн нерсе калтырганын эске алсак, бул ыкманын аркасында! – Мындан ары убакытты текке кетирбөөнү чечтим. Андыктан өзүңүзгө жаккан форумду тандаңыз жана кете бериңиз. Айтмакчы, бул сайт форумдардын биринин аркасында пайда болгон. Ал жерде бир канча убакыт сүйлөшкөндөн кийин мен эң көп көтөрүлгөн темалардын тизмесин чогултуп, мындай сайт суроо-талапка ээ болорун түшүндүм. Ошентип болду. Дээрлик бардык макалалар форумдагы айрым талкуулардан улам жазылат. Же мен да үзгүлтүксүз жүргүзгөн кат алышууларды ээрчип. натыйжасы кандай? Иште, иште жана кайра иште. Баштапкы этапта өзүңүзгө канчалык көп мүмкүнчүлүк берсеңиз, ошончолук бorмге ээ болосуз. Ал эми кесипкөйлүккө карай жол ошончолук узун болот. Бирок сиз гана ким болгуңузду тандай аласыз - ойлонбой баскыч баскан маймылбы же профессионалбы. Тигил же бул жетүү мүмкүн болгон жолду өзүң гана тандайсың. Биринчи жол ачык. Экинчисин көрсөтүүгө аракет кылдым. Сиздин кадамыңыз, мырзалар! Түпнуска булакка шилтеме: Келгиле, башынан баштайлы же 'Hello, Java World!'
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION