JavaRush /Java блогы /Random-KK /Басынан бастайық немесе «Сәлем, Java әлемі!»
articles
Деңгей

Басынан бастайық немесе «Сәлем, Java әлемі!»

Топта жарияланған
Мен бұл мақаланы әдеттен тыс, бір қарағанда шегініспен бастағым келеді. Нақты неліктен екені кейінірек белгілі болады.
Басынан бастайық немесе Сәлем, Java әлемі!  - 1
Сонымен, біреуді елестетейік. Бұл біреу тау шаңғысын меңгергісі келеді. Бұл үшін ол келесі қадамдарды жасайды:
  • Нұсқаушылар, оқулықтар, оқу құралдары және т.б. – мұның бәрі зұлымдықтан. Шаңғы тебуді өз бетіңізше үйренуге болады. Сонымен қатар, ол мектепте шаңғымен сырғанауды жақсы үйренді. Тиісінше, білімі жоғары адамдардың барлық кеңестері еленбейді.

  • Ең керемет жабдық таңдалады. Мамандық деңгейден төмен емес. Аяғыңызды ауыртатын қатты етік. Біреудің физикалық дайындығы деңгейінен әлдеқайда асатын, иілу үшін керемет күш-жігерді қажет ететін қатты шаңғылар. Ал, т.б.

  • Сынақ жолы – бұл... айталық, гигант слалом бойынша әлем чемпионатының кезеңі өтетін трек. Бұл оқу үшін дұрыс.
  • Сол рухта жалғастырыңыз.
Міне, сұрақ. Сіз бұл біреуді қалай атайсыз? Өз басым, тау шаңғысымен 20 жылдай таныс адам ретінде мен оны (және бұл әлі де өте жұмсақ!) - үмітсіз деп атаймын. Бұл тәсілмен ештеңе үйрену мүмкін емес. Бірақ жарақат алудың сенімді жолы. ЕҢ сенімді нәрсе - шаңғы тебу идеясынан біржола бас тарту. Бұл бағалауда сіз менімен келісесіз деп ойлаймын. Қалай болғанда да, бұл біреу оған жағымсыз ештеңе күтпейтініне сенімдімін. Енді басқа біреуді елестетейік. Ол, айталық, информатика студенті болсын. Ол C++, C#, Pascal тілдерін біршама біледі. Ол Java тілін үйренгісі келеді. Оның әрекеттері:
  • Оның білім деңгейіне сәйкес келетін әдебиеттер (дәрежесі нөлдік, ашығын айтқанда) шетке сыпырылады. Аталған C++, C# және OOP теорияларымен аздап танысуға негізделген.
  • Ең қуатты бағдарламалау ортасы алынады. Eclipse немесе NetBeans делік. Барлығын өзі жасайтын, бір түймені басыңыз.
  • Сынақ қолданбасы ретінде біз... таңдаймыз, сөйлесейік. Клиент-server қосымшасы, апплет түріндегі клиент бөлігі, server бөлігі - веб-сервис немесе ең нашар жағдайда сервлеттер. Тек оқу үшін дұрыс.
Сұрақ. Сіз бұл біреуді қалай атайсыз? Сіз парадокстың не екенін білесіз бе? Өйткені, бұл жағдайда бейтарап бағалаулар айтарлықтай аз болады. Жағдайлар барлық жағынан бірдей болғанымен. Екінші жағдайда денсаулық пен өмір үшін салдары аз өлімге әкелетін болса. Мүмкін мәселе осы шығар? Жағдайлар шынымен де өте ұқсас. Мен оларды бір стильде арнайы сипаттадым. Бір таңғаларлық нәрсе: егер біріншісінің абсурдтығы айқын болса, екінші сценарийден кейін жаңадан шыққан әзірлеушілер алаңдатады. Java тілін меңгеру MIDlet жазудан, дерекқорларға арналған клиенттерді, чаттардан, сервлеттер негізінде веб-сайттарды жасаудан басталады... Сіз ұзақ уақыт жалғастыра аласыз. Бірақ мәселе сонда да анық. Сонымен қатар, бастапқы деңгейдегі әдебиеттер менсінбеушілікпен бір жаққа қойылады. Осыны оқисыз ба? Маған? Иә, мен үш жыл бойы C++ тілінде жазамын! (Параметрлер Паскаль тілінде, тіпті Visual Basic тілінде де бар.) Және мен OOP білемін! Жалпы. Әрі қарай не? Ал содан кейін бұл:
  • 8 byte массивін ұзындыққа қалай түрлендіруге болады?
  • Неліктен бұл орын алады NoClassDefFoundError?
  • Неліктен мен Eclipse ( ) бағдарламасында қолданбаны іске қосамын NetBeans/IDEA/JBuilderжәне бәрі жақсы, бірақ онсыз жазамын java HelloWorld.classжәне қате бар?
  • Неліктен апатқа ұшырайды ClassNotFoundException?
  • Неге кітапхана жоқ? Мен оны classes.zip ішіне қойдым, бірақ бәрі де нәтиже бермейді!
  • Неліктен мен нысандар массивін жасаймын, бірақ массивтің элементін пайдалануға тырысқанда мен аламын NullPointerException?
  • Ал неге ...?
  • Ал неге ...?
  • Ал неге ...?
Неліктен неге? Бірақ Java C++ немесе Паскаль емес болғандықтан. Және Perl емес. Бұл тілдерді білу көбінесе көмектеспейді, сонымен қатар кедергі келтіреді. Бұл тілдердің мүлдем басқа идеологиясы болғандықтан ғана. Бірақ сыртқы ұқсастық жаңылыстырады. Әрине, бұл «неге» және «қалай» сұрақтарының барлығына кітаптарда жауаптар бар. Ең қарапайым деңгейдегі әдебиетте. Бірақ оны оқу жалқау (нұсқалар: ұят, уақыт жоқ және т.б.). Мен жақсы C++ мамандары Java тіліне аударған көптеген стереотиптерді білемін. Соңғы бір мысал: конструкторда ерекше жағдайды ешқашан тастамау керек. Неліктен? Иә, өйткені C++ тілінде мұндай нысанның күйі анықталмаған. Тиісінше, жадтың ағып кетуі орын алады. Java-да қоқыс жинағыштың болуына байланысты мұндай проблема жоқ. Алайда мұндай жағдайдан аулақ болуға тырысатындар бар. Қалыптасқан стереотип бойынша. Ең сорақысы, осы әрекеттердің нәтижесінде code әлдеқайда күрделене түседі. Синтаксисті үйрену оңай. Және мүлдем жеткіліксіз. Тілдің идеологиясы әлдеқайда маңызды. Ал оны тиімді меңгеру үшін ең басынан бастау керек. Неліктен дәл және қалай? Ал бұл басқа сұрақ. Сонымен. Қайдан және қалай бастау керек. Бұл сіз қол жеткізгіңіз келетін нәрсеге байланысты. Егер сіз білікті codeтаушы маймыл болғыңыз келсе, кез келген нәрседен бастай аласыз. Егер сіз кәсіпқой болғыңыз келсе, бәрі біршама күрделірек. Менің тәжірибем мынаны айтуға негіз береді. Кәсіби әзірлеуші ​​мен «codeер» арасындағы айырмашылық оның не болып жатқанын түсінуінде. Ол түймелерді басудан сәл артық жұмыс істейді. Күшті орта өте жақсы көмек. Онсыз жасай алатындар үшін. Бірақ бұл көбінесе оны бастағандардың жалғыз құралы. Ал ол болмаған жағдайда codeтаушы маймылдың мәні нөлге тең. Өйткені басатын түймелер жоқ. Тұтастай алғанда, түймені басу шынымен құбыжық пішінді қабылдауы мүмкін. Менің әріптестерімнің бірі Java тілінде жазылған өнімді көрді. Оны орнату нұсқаулары келесі сөздерден басталды: «JBuilder бағдарламасын дискіден орнатыңыз...» Енді БҰЛ қазірдің өзінде қауіпті. Егер әзірлеушілер өнімді әзірлеу ортасынсыз жұмыс істей алмаса, мен оның қалай жазылғанын ойлаудан шошынамын. Қалай дегенде де, оны өнерпаздар жазды. «Не болып жатқанын түсінеді?» дегенді қалай түсінемін? Бұл адам мынаны түсінуі керек дегенді білдіреді:
  • Виртуалды машина дегеніміз не және ол не үшін қажет?
  • Виртуалды машина тұрғысынан класс дегеніміз не.
  • Пакет дегеніміз не?
  • Кітапхана дегеніміз не?
  • Виртуалды машина сыныптарды қалай іздейді және жүктейді; класс жүктеушісі дегеніміз не және ол қалай жұмыс істейді; әдепкі бойынша қаншасы бар; класс жолы дегеніміз не.
Және т.б. және т.б. Тізім жалғасуда. Мен әзірлеушінің өзіне тән білімді қоспағанымды ескеріңіз. Жіп дегеніміз не, OOP тұрғысынан класс дегеніміз не және оның нысаннан айырмашылығы, орналасу менеджерлері қалай жұмыс істейді - КЕЗ КЕЛГЕН әзірлеуші ​​мұның бәрін білуі керек. Мен санағанның бәрі техникалық сипатта. Бірақ көбінесе ненің дұрыс емес екенін түсіну үшін оларды білу өте маңызды болып шығады. Өмірден мысал. XML-мен жұмыс істеуге арналған xalan деп аталатын кітапхана бар. Ол бірнеше javax.xml... пакеттерін қамтиды - талдаушылар, трансформаторлар және т.б. Бұл кітапхана өте танымал. Мәселе мынада, дәл осы пакеттер J2SDK ішінде 1.4 нұсқасынан бері бар. Сұрақ. javax.xml.transform.stream.StreamSource сыныбына кітапханадан кіру кезінде қай сынып жүктеледі, егер xalan сынып жолында да болса - кітапхана немесе J2SDK? Бұл сұраққа жауап беру үшін класс жүктеушісі қалай жұмыс істейтінін білу керек. Мен бірде форумдардың бірінде төрт күндік талқылауды көрдім, ол ақыр соңында осы мәселеге қатысты. Код дұрыс жұмыс істемеді, себебі жүктеуші одан күтілетін сыныпты алмады. Мен немен айналысамын? Мәселе мынада: әзірлеу ортасы неғұрлым күшті болса, ол әзірлеушіге соғұрлым көп әсер етеді - соғұрлым ол аз ойлауы керек. Бұл қазірдің өзінде қандай жаман. Маймылға жақын. Бұл қаншалықты парадоксальды болып көрінсе де, бірінші қорытындыға әкеледі:

Қорытынды 1. Java тілін үйренуді қуатты ортасыз бастаған жөн.

Мен блокнот деңгейіндегі редакторларда жазуды қолдамаймын. Бірақ мен мұны жалғыз себеппен жасамаймын - оларда, әдетте, синтаксистік бөлектеу жоқ. Бұл теріс әсер етпейтін керемет ыңғайлы нәрсе. Сіз Notepad++ сияқты нәрсені пайдалана аласыз , ол Java синтаксисін түсінеді және айтпақшы, тегін. Мысалы, менде жүйеде ол үшін арнайы тіркелген .java файл түрі бар. Сонымен, синтаксисті бөлектеу және пәрмен жолы бар мәтіндік редактор. Екі-үш күндік азап - және сынып жолының не екенін, аудармашының қалай іске қосылатынын және басқа да көптеген ұсақ-түйектерді түсіну - мұны түсіну мәңгі қалады. Әрі қарай. Менің тәжірибем болашақта пайдалану үшін білімді алу мүмкін емес деп айтуға негіз береді. Әдебиетті ол жауап беретін сұрақтар туындағанда ғана оқуға тұрарлық деген мағынада. Егер сіз кітапты ол туралы сұрақсыз оқысаңыз, ақпарат бір апта ішінде жоғалады. Мен мұны өте жақсы білемін, соның ішінде өз тәжірибемнен. Мен бір рет сервлеттер туралы кітапты бес рет оқи бастадым. Мен олармен жұмысымда айналыса бастағанша, ақпарат сіңген жоқ. Және бұл оқшауланған жағдайдан алыс. Бір кездері, өте ертеде, шамамен 8-10 жыл бұрын, мен келесіні оқыдым, өкінішке орай, авторы есімде жоқ: Адамға жаңа бағдарламалау тілін қалай үйрету керек? Өте оңай. Сіз оған тілді, бірнеше тапсырмаларды және ең аз құжаттаманы беруіңіз керек. Содан кейін, бір-екі айдан кейін, ол кем дегенде осы тілде жаза бастағанда, толық құжаттаманы беріңіз. Ол екі аптадан кейін детективтік роман сияқты оқылады, содан кейін адам жұмысқа дайын болады. Мен бұл мәлімдемемен 100% келісемін. Екі айдан кейін, бір жағынан, барлық ұсақ-түйек мәселелер жойылады. Оларға жауаптар өз бетінше алынады, бұл олардың құндылығын айтарлықтай арттырады. Екінші жағынан, нақты сұрақтар қазірдің өзінде қалыптасады, олардың жауаптары құжаттамада беріледі. Бұл біріншіден кем емес парадоксальды болып көрінетін екінші қорытындыға әкеледі:

Қорытынды 2. Java тілін оқулықтарсыз бастаған жөн. Java API құжаттамасы + Java оқулығы - бұл жеткілікті.

Java API құжаттамасы міндетті болып табылады. Мен оны жергілікті, дискіде сақтауды ұсынамын. Сіз онымен бір емес, екі рет емес, тіпті он адаммен байланысуыңыз керек. Жеке менің ол жаққа бармаған күнім жоқ. Мен сондай-ақ Java оқулығын жергілікті түрде сақтауды ұсынамын. Бұл оқулықты толығымен алмастыратын бастапқы деңгейдегі ақпарат. Дегенмен, онда оның жеткілікті мөлшері бар. Айта кету керек, мен жұмыста айналыспайтын салаларда мен әлі де өзім үшін жаңа нәрсе табамын. Көп оқу жаман. Сұраныс болмағанша жауап жоқ. Аз кітап оқу да жаман. Алтын орта қайда? Мен бұл ережені ұстанамын: мен сұраққа жауап алдым деп ойлағанша оқимын. 90% жағдайда бұлай болмайды. Бірақ дәл осы сәтте тоқтап, өз бетінше жалғастырған дұрыс. Бастапқы серпін алынды және мәселені өз бетінше шешу көп нәрсені береді. Әрине, біраз уақыттан кейін әдебиетпен айналысуға тұрарлық. Бірақ қайтадан, бастапқы деңгейдегі әдебиет үшін. Мұның бәрі нонсенс болып көрінсе де, бастапқы тарауларды оқыған жөн. Сіз кем дегенде жаңа нәрсе үйренетініңізге кепілдік бере аламын. Және бұл нәрсе кейінірек өте маңызды болып шығуы мүмкін. ЖАРАЙДЫ МА. Не туралы жазатынымызды анықтап алған сияқтымыз. Қалай жазу керек - тым. Бірақ мен не жазуым керек? Бұл мақаланың қайдан басталғанын есіңізде сақтаңыз. Лездік хабар алмасу жүйесін жазудан бастау керек пе? Таңдау, әрине, сіздікі. Менің ойымша, бұл оған тұрарлық емес сияқты. Тапсырма неғұрлым күрделі болса, соғұрлым көп сұрақтар туындайды. Тәжірибе болмаған жағдайда, мұндай сұрақтар оларды шешудің мүмкін еместігі сезімін тудырады, содан кейін өзінің кемшілігін, ақымақтығын және т.б. Сайып келгенде, бұл «тозақта ...» деген шешімге және тілді үйренуді тоқтатуға әкелуі мүмкін. Анау. қажет болғаннан мүлдем қарама-қарсы әсерге. Бұл Java-ға емес, оқу процесінің өзіне тән. Бірақ қандай да бір себептермен олар бағдарламалауды үйретуге келгенде бұл туралы ұмытып кетеді. Сонымен бірге, аяғына дейін орындалған шағын тапсырма сапардың басында тастап кеткен үлкен жүйеге қарағанда әлдеқайда үлкен қанағаттану мен үлкен білім бере алады. Үшінші қорытынды: Қорытынды 3. Java тілін қазіргі білім деңгейіңізге сәйкес келетін тапсырмалардан Java тілін үйренуді бастаған жөн. Формула 1 автокөлігінде көлік жүргізуді үйренуді бастамау керек. Әлем кубогы жолында тау шаңғысын үйренуді бастау керек емес. Сол сияқты, сіз Java тілін меңгеруді үлкен нәрсе жазудан бастамауыңыз керек. Мен амбиция талап ететінін түсінемін. Бірақ бұл жағдайда олар негізсіз. Неғұрлым негізсіз амбицияларыңыз болса, соғұрлым кәсіби маман болу мүмкіндігіңіз азаяды. Оқыту тұрғысынан таңқаларлық құбылыс - бұл әртүрлі форумдар. Егер сіз оларды ақылмен пайдалансаңыз. Ақылды - бұл әдеттегідей емес, керісінше істеу керек дегенді білдіреді. Дәлірек айтқанда, сұрақ қою емес, оларға жауап беру. Қолыңызда күш бар кез келген нәрсе. Мен бәрін білемін деп ойласаңыз, қатты қателесесіз. Иә, мен көп нәрсені білемін. Бірақ мен бұрын-соңды кездеспеген жерлерім бар. Немесе менде бар, бірақ өте аз. Менің тәжірибемдегі классикалық мысал - сертификаттармен жұмыс істеу: codeқа қол қою, қауіпсіз қосылымдар және т.б. 1998 жылы дипломдық жұмысымды жазған кезде мен мұны істедім, бірақ содан бері бәрі қатты өзгерді. Осы жылдар ішінде менде сұрақтар жиналды. Мен тіпті кейбір әдебиеттерді оқи бастадым. Бірақ, жоғарыда айтқанымдай, болашақта пайдалану үшін білім ала алмайсыз. Бұл лом сияқты - бір құлағынан кіріп, екіншісінен шығады. Басындағы тесіктен басқа нәтиже жоқ. Және бұл соңғы уақытқа дейін жалғасты, форумда tomcat-пен SSL байланысы туралы сұрақ қойылған кезде. Кейбір мәселелер болды. Тек осы сұрақ мені терең қазуға итермеледі. Ал өтініш болса, жауабы да бар. Мен адамның проблемасы неде екенін түсініп қана қоймай, басқа да пайдалы ақпараттарды таптым. Мен сертификаттардың қалай жұмыс істейтінін түсіндім. Тиісті мақала жоспарда бар. Және бұл барлық уақытта болады. Мен, мысалы, GUI-мен біраз жұмыс істедім. Тек форумдағы біреудің сұрағы нәтижесінде TextLayout бағдарламасының кейбір мүмкіндіктерін түсіндім. Бұл сұраққа дейін мен олар туралы білмедім. Сол сияқты, мен жақында JButton html-ті өз тақырыбы ретінде түсіндіретінін білдім. Бұған дейін мен мұны тек JLabel жасай алады деп ойладым. Бұл тағы да форумның арқасында. Сонымен былай шығады: сұрақтарға неғұрлым көп жауап берсек, соғұрлым өзімізді үйренеміз. Сондықтан форумда адам отырса, ештеңе істемейді деген халық пікірімен келіспеймін. Бұл анық емес және ең алдымен адамның форумда неліктен екеніне байланысты. Ал ол негізінен немен айналысады – сұрау немесе жауап беру. Шын мәнінде, сіз тіпті сұрай аласыз. Бірақ сонымен бірге ақылмен. Шешім сұрамаңыз (әсіресе мен кеше ғана кездестірген «Білетіндер жауап беріңіздер және сұрақ қоймаңыздар!» Посткриптімен), керісінше, қайтадан орнатуды сұраңыз. қозғалыс бағыты. Жаңадан бастаушыға қай жерде қазу керектігін түсіну қиын екені түсінікті, өйткені оған тәжірибе жетіспейді. Бұл адамның кінәсі емес, тіпті проблема емес. Бұл жақсы. Барлығы осыдан өтті. Мен қосылдым. Жеке мен үшін адамның бір нәрсені үйренгісі келетіні әлдеқайда маңызды. Және тек жауап алу емес, Бағдарламалау зертханасын оқығаннан кейін бес minutesтан кейін оны ұмыту үшін. Мен сізге әрқашан қозғалыс бағытын айтамын. Оны өзім білсем. Егер мен білмесем, ең болмағанда болжай аламын. Және мен міндетті түрде жауап іздеймін. Бірақ мен ешқашан тікелей жауап бермеймін - кем дегенде, есімде жоқ. Айтпақшы, форумдардың бірін тастап кеткеніме осы себеп болды. Мен жетекші сұрақтар қоя бастағанда, олар маған қарапайым жауап беру әдеті екенін бір ауыздан түсіндірді. Ал сұрақтарым арқылы мен одан әрі қарай жүре аламын. Форумның деңгейі көп нәрсені күткенін ескерсек, бұл тәсілдің арқасында! – Мен енді уақытты босқа өткізбеймін деп шештім. Сондықтан өзіңізге ұнайтын форумды таңдап, кетіңіз. Айтпақшы, бұл сайт форумдардың бірінің арқасында пайда болды. Ол жерде біраз сөйлескеннен кейін мен жиі көтерілетін тақырыптардың тізімін жинақтап, мұндай сайттың сұранысқа ие болатынын түсіндім. Осылайша болды. Мақалалардың барлығы дерлік форумдағы кейбір талқылаулардан кейін жазылады. Немесе мен үнемі жүргізетін хат-хабарларды қадағалаймын. Нәтиже қандай? Жұмыс, жұмыс және қайтадан жұмыс. Бастапқы кезеңде өзіңіз үшін неғұрлым көп нәрсе жасауға рұқсат етсеңіз, соғұрлым аз білім аласыз. Ал кәсіпқойлыққа апаратын жол ұзағырақ. Бірақ сіз ғана кім болғыңыз келетінін таңдай аласыз - түймені басатын маймыл немесе кәсіпқой. Тек сіз осы немесе басқа нәрсеге қол жеткізе алатын жолды өзіңіз таңдайсыз. Бірінші жол анық. Мен екіншісін көрсетуге тырыстым. Сіздің қадамыңыз, мырзалар! Түпнұсқа дереккөзге сілтеме: басынан бастайық немесе «Сәлем, Java әлемі!»
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION