Бірінші бағдарламалау тілін таңдау

Әрине, бұл бағдарламалау туралы сөйлесу кезінде менің кіріс жәшігіме келетін сұрақтардың бірі. Егер сіз бағдарламалық жасақтаманы үйренуге және бүкіл әлемдегі ақысыз бағдарламалық жасақтамаға / ашық бастапқы кодты қоғамдастықтарға қосқан үлес түрінде ақысыз білімді қайтаруға мүмкіндік беретін мақалалар топтамасын бастағымыз келсе, онда осы негізгіге сәл қиын болса жауап беру керек сұрақ. Мен қандай бағдарламалау тілін үйренуім керек?

Біраз тарих

Бағдарламалау тілін түсінуге және таңдауға кірісу үшін алдымен олардың тарихы, қолданылуы мен функциялары және уақыт бойынша әртүрлі қажеттіліктерді қалай шешетіндігі туралы аздап білуіміз керек.

Машина тілдері (төмен деңгей)

Жалпы ретінде белгілі жиналыс, біз жалпы тілдің диалектісі ретінде анықтай алатын бағдарламалау тілдері ... Бұл өте күрделі болып көрінеді, бірақ мен оны мысалға келтіргім келеді ... Біз компьютердің әмбебап тілі екенін білеміз электр қуаты, бұл дегеніміз, сайып келгенде, компьютер оқитын нәрсе 0sy 1иә, осылай атайық eкомпьютерлік ағылшын. Бұл мысалда испан тілі - бұл негізгі ереже, бірақ біз жақсы білетіндей, латындықтар сөйлейтін испан тілі Испаниядағымен бірдей емес, тіпті солай болса да, Перу испан тілі Аргентина испанымен бірдей емес. Барлығымызда бірдей сөздер бар екені анық (0sy 1s), бірақ қолдану мен мағынасы контекстке байланысты әр түрлі болуы мүмкін.

Бұл процессор деңгейінде болады. Біз туралы сөйлескенде есептеу архитектуралары, (amd64, intel, arm, ...) біз сол диалектке сілтеме жасаймыз компьютерлік испан. Себебі әр түрлі компаниялар тәртіп пен мағынаны өзінше түсінеді, сондықтан кейбіреулері ағым ағыны немесе оларды сақтау тәртібі сияқты бөлшектерде әр түрлі болады. 0sy 1s.

Бұл бағдарламалау тілдері өте жылдам, өйткені олар бағдарламалаудың мүмкін болатын ең төменгі деңгейінде жұмыс істейді, бірақ олар архитектураға өте тәуелді және басқаларына қарағанда үйрену біршама күрделі. Деректерді түрлендіру және олар бойынша пайдалы заттарды іске қосу үшін көбінесе ұғымдардың кең базасы қажет. Видео ойындарды ұнататындар үшін мысалы, ойындарды бағдарламалау үшін Ассамблеяны қолданған SEGA консолі бола алады. Әлбетте, сол кездегі жадтың мөлшері бүгінгі күнмен салыстырғанда минималды болды және жылдам әрі жеңіл бағдарламалар шығаратын тілді меңгеру қажет болды.

Жоғары деңгейдегі тілдер

Бұл үлкен топ одан кейінгі тілдерді ойластырады жиналыс. Портативті кодты алу қажеттілігі деп аталатын тілдер тобының пайда болуына әкелді құрастырылған. Осылардың ішінде бірінші болып 70-ші жылдардан бастап операциялық жүйе деңгейінде бағдарламалауда басымдыққа ие болған С болды.

Құрастырылған тілдер

Менің пікір білдіретінімнің практикалық мысалын көрейік. Кодтың бір жолын басып шығаратын өте қарапайым Си тілінің бағдарламасын қарастырайық.

Меншікті. Кристофер Диас Риверос

Оны құрастырғаннан кейін бізде мыналар бар:

Жеке дизайн: Кристофер Диаз Риверос

Енді сол нәтижені Ассамблея кодында қайталау үшін не жазуымыз керек екенін көрейік:

Меншікті. Кристофер Диас Риверос

Бұл біздің 3 жолды кодтың аудармасы simple.c, файл simple.s командасы арқылы жасалады gcc -S simple.c және біздің процессор диалект бойынша түсінетін нәрсе жиналыс. Құрамына енетін орындалатын файл құру үшін анық 0sy 1s файлды өңдеу қажет simple.s және оны біздің жүйенің ортақ кітапханаларымен байланыстырыңыз. Бұл a көмегімен жасалады құрастырушы (as) және а қосқышы (ld).

Құрастырылған тілдер төменгі деңгейлерге қарағанда үлкен артықшылық береді портативтер. Портативтілік әр архитектура үшін арнайы код жасау қажеттілігінсіз әр түрлі процессорларда орындалатын кодты ұсынады. Тағы бір айқын артықшылығы - бұл кодты оқу және жазу кезінде қолданылатын қарапайымдылық. Оның негізгі кемшіліктерінің қатарында біз өте күрделі, өйткені біз көретін келесі тілдер түрлерімен салыстырғанда, егер сіз басқаруды білмесеңіз, С ұсынатын еркіндік зиянды болуы мүмкін, бұл мылтықты тапсырғанмен бірдей. Мүмкін, тәжірибе жетіспейтіндіктен адам мылтықты тазарту үшін өз аяғын атып тастауы мүмкін.

Түсіндірілген тілдер

Бұл топта бізде әр түрлі тілдер бар, ең маңыздылары Python, Ruby, Javascript, PHP және т.б ... Бұл тілдердің негізгі идеясы бағдарламаларды құрудың және орындаудың жылдам әдісін қамтамасыз ету болып табылады. , өйткені көптеген қиын процестер интерпретаторда жүзеге асырылады, ал логиканың бағдарламалануы кодта жүзеге асырылады. Жоғарыдағы мысалды қарастырайық, бірақ бұл жолы Python-да жазылған:

Меншікті. Кристофер Диас Риверос

Ең көрнекті нәрселердің ішінен біз бірінші жол аудармашыны шақыруға жауап береді (біздің қосымшамызды орындайтын бағдарлама), ал келесі код оның С тіліндегі нұсқасынан гөрі «қарапайым», өйткені барлық ауыр жұмыстар орындалады. аудармашы туралы.

Меншікті. Кристофер Диас Риверос

Түсіндірілетін тілдер әзірлеушіге қауіпсіздіктің үлкен қабатын ұсынады, өйткені оларда қауіпсіздіктің қатаң бақылауы бар (олардың жетілмегендігіне САҚ БОЛЫҢЫЗ, өйткені ең жақсысы да қате жіберуі мүмкін) және біз бұдан былай қаруды ату қаупін сезбейміз ол бірінші әрекеттен бастап аудармашы ескерту жасайды және орындалу тоқтатылады. Бағдарламаны орындау кезінде басты кемшіліктер айқындала бастайды, өйткені оның екілік әріптесінен гөрі баяу, бұл кодтың жұмыс істеуін қамтамасыз ету үшін өңдеудің көп мөлшеріне байланысты. Егер бағдарлама өте қысқа мерзімдерді қажет етпесе, айырмашылық байқалмай қалуы мүмкін, бірақ егер біз секундына мыңдаған немесе миллиондаған мәліметтер туралы айтатын болсақ, айырмашылық жинақталған тілдерде экспоненциалды түрде байқалады.

Теру

Бұл бағдарламалау тілдерінің сипаттамасы, олар болуы мүмкін қатты әлсіз терілген. Мен бұл тақырыпты басқа жазба үшін қалдырайын деп жатырмын, өйткені бағдарламада жадтың қалай сақталатынын түсіну өте қажет және қызықты, бірақ әзірге біз тек ажырата білуіміз керек: қатты терілген тілдер - бұл білуді қажет ететін тілдер айнымалы немесе тұрақты бойынша жұмыс істейтін мәліметтер типі, ал әлсіз түрлері конверсияны орындай алады жасырын және бәрі конверсия иерархиясына, содан кейін тілге байланысты болады. (егер ол қазір түсінілмесе, ешқандай проблема болмаса, біз оны кейінге қалдырамыз)

Парадигмалар

GNU / Linux әлеміндегі барлық нәрселер сияқты, бағдарламалау тілдері де парадигмаларға негізделген және олардың айналасында қоғамдастықтар құрылады. Мысалы, бізде Python қоры o лағыл o PHP o Bash (бұл жағдайда бұл GNU қауымдастығы). Мен бұған жеткім келетін нәрсе - мен әрқайсысының жағымды және жағымсыз жақтарын көп мөлшерде көрсете алмаймын, бірақ мен сізге еркін бағдарламалау тілі бар жерде үйренуге және қатысуға болатын қауымдастық бар екенін айта аламын. Тіл аудармашылардың барлығы С тілінде немесе кейбір жақын туындыларда жазылмаса да, олардың дамуын әдетте барлық тіл қолданушыларға әсер ететін шешімдер қабылдауға жауап беретін қоғамдастықтың кіші тобы жүзеге асыратынын айта кеткен жөн. Институттар, тіпті С-дағыдай, тілдің дұрыс дамуын қамтамасыз ету үшін құрылуы мүмкін.

Қайсысын таңдау керек?

Біз бұған дейін тілдер туралы жеткілікті түрде сөйлескенбіз, мен әлі күнге дейін ең маңыздысына жауап бере алмаймын😛. Бірақ осы шағын мақаланы қарап шыққаннан кейін сізге қай тілді таңдау керектігін айтудың қажеті жоқ деп үміттенемін, өйткені сіз осы ақпаратпен қызығушылық тудыратын тілді іздей аласыз. Егер сіз тілде бағдарламалауды үйренгіңіз келсе, анық жиналыс Сізде бірдеңе жұмыс істей бастағанға дейін көп уақытты қажет етеді, егер сіз компиляцияланған тілді таңдасаңыз, уақыт айтарлықтай қысқарады, мұнда * NIX жүйелерінде портативтіліктен басқа сіз жұмысына қатысты ақпаратты біле аласыз. бірдей жүйе, өйткені С немесе туындылармен байланыста болу сізді бір жолмен немесе басқа жолмен амалдық жүйенің қалай жұмыс істейтінін білуге ​​мәжбүр етеді. Сонымен, егер сіз жеңіл нәрсені білгіңіз келсе және сізге көп нәрсені түсінбей-ақ көп нәрсе істеуге мүмкіндік берсе, интерпретацияланған тілдер бағдарламалау дағдыларын үйренудің және дамытудың қызықты әдісі болып табылады.

Қызықты нәрсемен үйреніңіз

Бұл сізге бере алатын ең жақсы кеңес, егер сіз бірдеңе білгіңіз келсе, алдымен қызықты нәрсені табуыңыз керек, әйтпесе кез-келген бағдарламалау тілінің үйрену қисығын еңсеру өте қиын болады. Сіз жүйелерді басқарасыз делік, бұл жағдайда сізге тамаша тілді үйрену қажет болуы мүмкін Сценарийлер (интерпретацияланған), соның ішінде бізде Perl, Python, Bash, т.с.с. бар шығар ... Сіздің ойыңыз ойындар шығар, ойын түріне байланысты Javascript, Lua, C ++ сияқты көптеген жобалар бар ойнау. Мүмкін сіз жүйелік деңгейде құрал жасағыңыз келуі мүмкін, өйткені бізде C, Python, Perl бар, өйткені олардың кейбіреулері қайталанады және көптеген тілдер көптеген тапсырмалар үшін қолданыла алады, сондықтан да анықтама туралы көп мақсатты тілдер бұлардың көпшілігінде.

Жобаны бастаңыз

Мұнымен сіз келесі компиляторды, тіпті келесі бағдарламалау тілін жасайсыз дегенді білдірмеймін, жоба сіздің сүйікті бағдарламаңыздағы кішігірім қатені түзету, мүмкін құжаттаманы жақсартуға көмектеседі. Неліктен құжаттама? өйткені бағдарламалық жасақтаманың қалай жұмыс істейтінін оқудың және оның құжаттарын жазуға көмектесуден гөрі жақсы әдіс жоқ, өйткені бастапқы кодтан кейін ол бағдарлама туралы ең жақсы ақпарат көзі болып табылады. Тағы бір сәтте біз жобаның кодын қалай оқып, олар алатын функциялары мен мәндерін түсінуді білеміз.

Мұнда келгеніңіз үшін көп рахмет және сіздің пікірлеріңіз маған жақсы мазмұн құруға және қайда көңіл бөлу керектігін білуге ​​көмектеседі, Сәлемдесу!


Мақаланың мазмұны біздің ұстанымдарымызды ұстанады редакторлық этика. Қате туралы хабарлау үшін нұқыңыз Мұнда.

37 пікір, өз пікіріңізді қалдырыңыз

Пікіріңізді қалдырыңыз

Сіздің электрондық пошта мекен-жайы емес жарияланады. Міндетті өрістер таңбаланған *

*

*

  1. Деректерге жауапты: Мигель Анхель Гатан
  2. Деректердің мақсаты: СПАМ-ны басқару, түсініктемелерді басқару.
  3. Заңдылық: Сіздің келісіміңіз
  4. Деректер туралы ақпарат: заңды міндеттемелерді қоспағанда, деректер үшінші тұлғаларға жіберілмейді.
  5. Деректерді сақтау: Occentus Networks (ЕО) орналастырған мәліметтер базасы
  6. Құқықтар: Сіз кез-келген уақытта ақпаратты шектей, қалпына келтіре және жоя аласыз.

  1.   аноним дижо

    Әдеттегідей 10 !!!!!! Мақалаларыңызға рахмет. Алдағы сәлем және тағы басқалар !!!!

    1.    ChrisADR дижо

      Көп рахмет 🙂 мені әрі қарай жаза беруге шақырады. Алақай!

  2.   Рубен дижо

    «Қай тілді таңдау керек?» Деген сұрақ қою қателік деп ойлаймын. Мен тіл - оның ең кішісі деп ойлайтындардың бірімін, ең бастысы - бағдарламалау негіздерін үйрену және «есептеп ойлау». Синтаксисті, оны теруді, егер OOP қолдайтын болса, оның утилитасын және т.б. шешіңіз. Менің ойымша, бұл зерттеуде өздігінен пайда болатын нәрсе, және кез келген бағдарламалаушы 1, 2 және 3-тен астам тілдерді біледі ... және бағдарламалау тұжырымдамалары (және синтаксис емес) арқасында ол қабілетті сіз әлі тәжірибе көрмеген тілде бағдарламалау.
    Дегенмен, бастамашылар үшін менің ойымша, жақсы тіл оның қарапайымдылығы үшін Python бола алады, бірақ бәрінен бұрын алгоритмдерді зерттеп, заттардың «ішінде» қалай жұмыс істейтінін біліңіз.

    Сәлемдесу ChrisADR

    1.    ChrisADR дижо

      Сәлем Рубен, бөліскеніңіз үшін рақмет
      Мен бағдарламалау әлемінде уақыт өте келе білген бір нәрсе бар, яғни «көп нәрсені жапқан адам сығымдамайды» және осы белгілі фраза арқылы мен бірнеше рет, әсіресе, ең ынта-жігерімен кодты қалай үйренуге болатындығын біліп көріңіз және өте жылдам бұрылыңыз. Менің ойымша, бұл менің ойымша, жақсы құрастырушы кейбір ассемблер диалектісі туралы түсінікке қоса, компилятор тілін және аудармашы тілін білуі керек.
      Себеп келесіде, прототип әрқашан қарапайым және тез жасалатын, оңай шығарылатын және жалпы нәтиже беретін нәрсе болуы керек, бірақ егер ол жеткіліксіз болса, аудармашы келген кезде жүгінетін «В жоспары» болуы керек. оның шегі.
      Ассамблеяның диалектісін білу сізге сенімділік беріп қана қоймай, «есептеп» ойлауға үйретеді, бірақ бұл бөлім бәрінен де күрделі екендігі және бұл барлық бағдарламашыларға келе бермейтіні сөзсіз.
      Бірақ тақырыпқа қайта оралыңыз, өйткені менің ойымша, басты тіл «тілді таңдап, КӨП жаттығу жасаңыз», өйткені бағдарламалауды жақсартудың жалғыз жолы - кодты оқу және жазу, және бұл мен үйренген нәрсе ядро қауымдастығы Бір синтаксисті ұзақ уақыт сақтаған кезде, сіз форманы көруді тоқтатып, НЕГІЗГІ УАҚЫТҚА алаңдай бастайсыз. Бастапқы кезден бастап тілді немесе синтаксисті таңдау идеясы - адам оны оқуды және жазуды дағдыға айналдырады, сол арқылы бағдарламаның синтаксисінің орнына бағдарламаның МАҒЫНАСЫ оқыла бастайды.
      Бұл осы жазбаның басты себебі, әрқайсысы өз тілдерін таңдайды, келесіде біз түсініктерді түсіндіре аламыз, мүмкін күмәндар осымен анықталады 🙂
      Сәлемдесу және бөліскеніңіз үшін рақмет.

  3.   deibis contreras дижо

    хабарлама үшін рахмет жақсы болды.

    тілекпен

    1.    ChrisADR дижо

      Сәлем Дейбис, бөліскеніңіз үшін рақмет you Сәлемдесу

  4.   ХорхеФС дижо

    Менің кеңесім: PHP-ден басқасы. 20 жыл бұрын PHP веб-программаны CGI көмегімен басқа тілде бағдарламалаудың күрделілігінің жоғары деңгейінің арқасында белгілі бір мағынаны алды. Бірақ бүгінде веб-дамуды қуатты тілдерде әлдеқайда жағымды ету үшін Python үшін Django, Java үшін Spring немесе Ruby үшін Rails сияқты көптеген алуан түрлі құрылымдар бар. Қазіргі кезде PHP тілдің танымал диаграммаларында кездессе де, менің ойымша, PHP уақыт өте келе өзектілігін жоғалтады.
    Оқу қисығы тік болса да, бағдарламалаудың шындығын түсінуге C \ C ++ бастап кеңес беремін.
    Құттықтаулар.

    1.    ChrisADR дижо

      Сәлеметсіз бе, Хорхе, бөліскеніңіз үшін рахмет, бұл Ларавелді есте сақтаңыз, бұл өте қатты Framework mí, мен ешқашан көктемді немесе Java-ны веб-сайттар үшін ұнатпайтын едім, мен оны өте ауыр деп санаймын, бірақ менің ойымша, бұл олар болған уақыттың бір бөлігі. нарық, сол кезде олар пионер болды, және қазіргі заманғы баламалар (Js, Python және Ruby) көп жұмыс жасамай, оқылатын және өзгертілетін кодты ұсыну тәсілін жетілдіре алды.
      Мен C / C ++ тілін өмірінің бір кезеңінде үйренуге бейіммін, мен Java-дан бастадым, бірақ бұл бағдарламалаудың әсемдігі деп ойлаймын, сіз өзіңіз қалаған нәрседен бастауға болады, егер сіз дәйекті болсаңыз, ол пайдалы болыңыз 🙂 Алақай

    2.    Рубен дижо

      Мен енді сізбен келісе алмаймын. Мен көптеген жылдар бұрын C және VB-мен жұмыс істей бастадым, кейінірек PHP және JS-ге назар аудардым (өйткені мен веб-дамуға көп көңіл бөлдім), ал кейінірек оқығанда C / C ++ және Java-ны үйрендім.
      PHP-дің бірқатар артықшылықтары бар, оларды мен бұл хабарламада келтіре алмадым. PHP7 жылдам (Python-ге қарағанда жылдамырақ ... hhvm-ді қолданбай, әр түрлі кэштер, Python жағдайында Phalcon немесе байт-код сияқты құрылымдар), оның кітапханалары мен фреймерлерінің саны өте көп, тікелей қолдануға болатын көптеген функцияларға ие оларды кез-келген уақытта, оның C тәрізді синтаксисі басқа тілдерге көшуді жеңілдетеді.
      Дүние жүзіндегі веб-сайттардың 30% -ы WordPress (PHP) арқылы жасалған және өзгермейтін сияқты, Википедия оны қолданады, Facebook (hhvm-мен) және көптеген сайттар, барлығы 80%.

      Django сияқты Ruby on Rails 12 жаста екенін еске саламын! Осы уақыт ішінде олар қандай квотаға қол жеткізді? Әрине, біз іс жүзінде монополияға ие және фрагментацияның түрі жоқ 2 шеңбер туралы айтып отырмыз. Менде тағы қандай маңызды балама бар? PHP өзектілігін жоғалтатын болады деп айтудың мағынасы аз.

      Енді Python модаға айналды, өйткені ол жылдам үйрену қисығы бар, бұл қарапайым тіл және олар сізге «Python-мен 20 сағат ішінде бағдарламашы болыңыз және онымен жұмыс жасаңыз» деп сатады, Google және тағы басқа компаниялардың қолдауымен. қазір түйіндемеде (немесе Javascript үшін 50 фреймнің күнделікті туылуымен) ерекшелену үшін жаңа тілдерді іздеу сәні бар (Go, Dart….), бұл өзгереді дегенді білдірмейді.

      Рубин - өте қызықты тіл, бірақ ол қалыптасқан үлгілермен бұзылатыны соншалық, оның PHP-ге қарағанда танымал болғанына сену қиын. Әрине, мен Ruby бағдарламалауды бастау үшін ең нашар тіл деп ойлаймын.
      Сіз маған Python-ді бағдарламалауға, тіпті Ruby-ге де, өзінің ерекшеліктерінің шексіздігімен де қызықты бола алады деп айтатындығыңызды түсінемін ... бірақ Java-мен бірге көктем бе? Шынымен бе? Java-да көп нәрсе болуы мүмкін ... бірақ Python мен PHP-ге қарағанда жағымды ма?

      Python-дан бастау өте жақсы, бірақ сіз тек Python-мен жұмыс істейтіндіктен, көптеген компаниялар сіздің бағдарламалау деңгейіңіз «терең» емес деп сену қаупі бар (сіз Python-да өте жақсы болсаңыз да). Себебі сіз C ++ немесе Java сияқты басқа «көп мақсатты» тілдермен бәсекелессіз. Сіз Python-да бағдарламалық жасақтама жасай аласыз, сілтеме деген не екенін, биттік операцияларды, қоқыс жинауыштың қалай жұмыс істейтінін және ұзақ уақытты біле алмайсыз.
      Python, мүмкін, «классикалық бағдарламалауға» ең аз ұқсастығы бар, оны «балалар тілі» ретінде қарастыруға болады (метафораны алыңыз), ал бұл өз кезегінде артықшылығы мен кемшілігі болып табылады.

      1.    ХорхеФС дижо

        «Python, мүмкін,« классикалық бағдарламалауға »ең аз ұқсастығы бар және оны« балаларға арналған тіл »ретінде қарастыруға болады (метафораны түсіну керек), ал бұл өз кезегінде артықшылығы мен кемшілігі болып табылады». LOL, бұл Python туралы айтқан ең күлкілі нәрселердің бірі. Сіз Python-ды шынымен білдіңіз бе?
        PHP-ден тыс бүкіл әлемде қанша уақыт болды?
        PHP досы өлі болып туылды. PHP (\ d +) өте жаман бастапқы дизайнына байланысты өте көп ауыртпалыққа ие және пайдаланушылар қауымдастығын қолдау үшін дизайндағы барлық алғашқы қателіктерді өте мұқият сүйрейді. PHP модульді емес, C-стиліндегі көптеген функционалдылықтармен дүниеге келді (айтпақшы, оны қайдан алғаныңызды білмеймін, өйткені оның синтаксисі C-ге ұқсас, оны басқа тілдерге оңай көшіруге болады). PHP өзін ұстау керек жоғары деңгейлі тілде ресми сайтта көрсетілген функциялар ізі сияқты ұнамсыз нәрселер бар http://php.net/manual/en/indexes.functions.phpСебебі ол модульсіз дүниеге келді, сондықтан бәрі лас, аттары жоқ.
        Бұл PHP кодының бір бөлігі:
        «Stream_notification_callback»);
        stream_context_set_params ($ ctx, $ params);
        var_dump (stream_context_get_params ($ ctx));
        ?>
        барлық уақытта «ағындық» функционалдық мүмкіндіктердің қайдан импортталғанын анықтауға болады ма? ЖОҚ, содан кейін олар құрастырудың функциялары деп айтуға болады, бірақ бүкіл экожүйе - бұл құрастыру функциялары? Сонымен, PHP кодында көптеген қоқыстар бар, егер сіз осындай жаман дизайнның күрделілігі мен пайдасыздығын түсіне алмасаңыз, мені кешіріңіз, бірақ оны көруге әлі көп дүние бар.
        Wordpress - бұл тамаша бағдарламалық жасақтама, бірақ бұл оның жақсы технологиялық базасы бар дегенді білдірмейді. Сіз таспен соққы жасай аласыз және тістеріңізбен тырнақтарды шығарып тастай аласыз, және сіз әлі де керемет ағаш жұмыстарын жасай аласыз, бірақ, әрине, жақсы балғаны қолданатын басқа ұсталарға қарағанда әлдеқайда көп жұмыс жасай аласыз.

        Екінші жағынан: «20 сағат ішінде Python-мен бағдарламашы болып, онымен жұмыс жасаңыз», мен мұндай ақымақтықты ешқашан көрген емеспін. Сіз PHP-де веб-сайтты 20 сағат ішінде құра аласыз және веб-бағдарламалаудың қалай жұмыс істейтіні туралы немесе бағдарламаның өзі туралы білесіз. Шын мәнінде, PHP-дің соншалықты танымал болғаны, өйткені бұл әлемге жаңадан келгендер PHP-ді қарқынды дамудың нүктесі ретінде қарастырады (сондықтан PHP коды соншалықты қиын болады).
        Python-дің кемшіліктері туралы айтатын болсақ, ол көрсеткіштермен жұмыс істегенде ғана сәтті болды, бірақ кез-келген жағдайда Python жоғары деңгейлі тіл (Java сияқты) және оларды синтаксистік деңгейде қолданбайды; бірақ абайлық операциялар, байыпты ма?, сіз бұл x << y, x >> y: https://wiki.python.org/moin/BitwiseOperators. Мен қоқыс жинайтын нәрсені аз түсіндім: https://docs.python.org/3/library/gc.html.
        PHP кемшіліктері:
        -PHP объектіге бағытталған бағдарламалаудың (OOP) дизайны өте нашар.
        - Сіз әлі операторларды шамадан тыс жүктей алмайсыз.
        -Сюрприз, function overloading PHP-де сіз бұл тұжырымдамадан күткендей емес.
        … .. мен жалықтым хэхэ.
        Құттықтаулар.

        1.    Рубен дижо

          Мен жақшаға «метафораны түсін» (Python-ды C ++ / Java-мен сол жұмыс ортасында салыстыру арқылы) қойдым, сіз оны түсінбегеніңіз анық. Мен сізге C ++ бағдарламашысы Python-ді Python бағдарламашысына қарағанда тезірек үйрене алады деп айта алар едім, өйткені C / C ++ бағдарламашысының орташа жалақысының Python-дан жоғары болуы таңқаларлық емес.
          Мен оны сізге басқа мысалдармен, тіпті сурет арқылы түсіндіре алар едім! бірақ сіз тек менің қойғанымды деконтекстизациялауға және мазақ етуге ғана назар аударатын сияқтысыз.

          Мен ешқашан PHP әлемдегі ең жақсы тіл немесе оның үлгілі дизайны бар деп айтқан емеспін, сіз оны қайдан алатынын білмеймін. Менің ойымша, басқалардың біліміне баға бермес бұрын оқылымды түсінуіңізді жақсартуыңыз керек. Шындық (және мен өз хабарламамда) онымен дамудың өте икемді екендігі, сонымен қатар сіз таба алатын барлық шеңберлер, кітапханалар мен утилиталар экожүйесінен тұрады.
          Сонымен қатар біз қандай салыстыру жасаймыз? Python көп мақсатты тіл ретінде ме, әлде веб үшін бе? Мұндай жағдайда оны неге РНР-мен салыстырамыз? PHP-дің белгілі бір өрісі бар, және дәл осы өрісте Python (0.2% -дық үлесімен, ол бүкіл жыл бойы өзгермеген) PHP-нің қасында палас болады.
          Енді PHP трендтерін қарастырайық; 82,4 жылғы қаңтарда 2017% -дан 83.1 жылғы қаңтарда 2018% -ға дейін: https://w3techs.com/technologies/history_overview/programming_language

          Python PHP-ді тақтан түсірмекші ме? Қай жылы? қай бес жылда? он жылдық?
          Python көптеген басқа міндеттерде қолданыла алады, тіпті PHP-ге қарағанда кеңірек қолданыла бастайды, бірақ Python веб-дамытушы тіл ретінде айтарлықтай маңызды емес, ал 0.2% 83.1% -дан тоқтап тұр (биыл өсіммен).

          Сіз PHP-ді білмейтіндігімді меңзеп, мен PHP-ден тыс айналып өтпеймін деп айтатын нәрселер ретінде қабылдайсыз, хаха. Қазіргі уақытта мен жұмысыма байланысты Java-да бағдарламамен айналысамын.
          Python-да бағдарламалау арқылы сіз биттік, қоқыс жинағыш немесе көрсеткіш туралы білімдеріңіз жоқ деп айтпадым. Керісінше, сіз бұл не екенін білмей-ақ Python-да бағдарламалай аласыз. Алайда, мен бұл C ++ бағдарламашы үшін болатынына қатты күмәнданамын. Мен Python веб-бағдарламалау үшін емес, «көп мақсатты тіл» саласына кірген кезде салыстыруды жасайтыным анық.

          20 сағат ішінде бағдарламашы болу - жай әзіл, асыра сілтеу. Алайда, мен сізге осыған ұқсас нәрселерді уәде ететін онлайн-білім беру платформалары мен курстары туралы әртүрлі сілтемелер ұсына аламын. Мені кінәламаңыз, оны «білікті бағдарламашы» болу 20 сағаттық курстан өту мәселесі деп санайтын еңбек нарығында кінәлаңыз. Python - сәнді тілдердің бірі, сонымен қатар ең жылдам үйренетін қисықпен ... ақ және бөтелкеде.

          Сіз өзіңіздің хабарламаңызға PHP-дің қаншалықты нашар екеніне сүйенесіз (бұл белгілі бір бөлігінде мен келісемін). Маған дұрыс сияқты, тек менің хабарламам ол туралы емес, бірақ неге PHP қолданыла береді және ол ертең сіз ойлағандай жойылмайды.

          құттықтау

  5.   ешкім дижо

    C -> Go -> (Lisp | Haskell | Java | бәрібір)

    1.    ChrisADR дижо

      Жақында оқырман маған электронды поштаңызға Go кітабы туралы ұсыныс жіберді, бұл болашақта ескеретін тіл және сол жерде пост болатын шығар 🙂 Бөлісетін көптеген графиктер

  6.   mvr1981 дижо

    Ал ... және мен нені бағдарламалаймын? Неліктен бұрыннан бар жақсы және тәжірибелі бағдарламашылармен бағдарламалау тілін үйрену керек? Басқалары әлдеқайда тиімді шешпеген қандай мәселелерді мен шеше аламын?… Қысқасы: бүгінде бағдарламашы болу қаншалықты түпнұсқа? Мен өзімнің білімім мен тәжірибемнің жетіспеуінен тепкілемей, шығарылмай қалай басқалармен ынтымақтастықта бола аламын?

    1.    ChrisADR дижо

      Сәлеметсіз бе mvr1981, шынымен де қызықты сұрақтар 🙂 біз оларды соңғысынан біріншісіне айналдырамыз.

      Өзімнің білімім мен тәжірибемнің жоқтығынан мені тепкілемей, басқалармен қалай жұмыс істей аламын?

      Егер сізді тепкілеуді қаламасаңыз, онда бірінші кезекте бұл процесті үйрену керек, сіз тек жобаларды өз қалауыңыз бойынша жасағысы келетін, қоғамдастықтың өз қалауына бейімделуін қалайтын жобаларға келетін адамдардың санын елестете алмайсыз. Мен, әрине, сенің үйіңе келіп, тәртіпсіздік жасап, отбасыңды менсінбейтін сияқтымын (бұл бірнеше рет солай сезінеді). Егер сіз бұған жол бергіңіз келмесе, үлес қосуға арналған нұсқаулыққа, оны жасауға болатын құралдарға мұқият назар аударыңыз және толық емес бірдеңе жібермеңіз, егер сізге көмек қажет болса, әрдайым байланыс құралдары бар, бірақ нашар орындалған жұмыс алғашқы алғашқы әсерлерді тудыруы мүмкін. Егер сіз өзіңізге байланысты өзіңізді алып тастағыңыз келмесе, сіз оны не істеп жатқанын білмейтін пайдасыз бағдарламашы ретінде көре аласыз немесе керемет бағдарламашы болу жолында жүресіз, және бұл тек тәжірибеде болады және сөзсіз жол бойындағы қателермен. Gentoo әзірлеушісі мәртебесін алғанға дейін мен бірнеше рет қателескен едім, және бұл маған «жаман уақытқа» қарамастан тырысуға кедергі болмады 🙂.

      Бүгінгі таңда бағдарламашы болу қаншалықты түпнұсқа?

      -Бұл түпнұсқалық туралы емес, бұл бүгінгі күннің қажеттілігі, тек 20 немесе 30 жыл бұрын келесілерді ойлаңыз, машинкада теру қажеттілік болды, сіз білетін немесе тым болмаса жасай алатын көптеген жұмыс орындары. Бүгінгі күні Office-ті білу қажеттілік болып табылады, іс жүзінде сізді Office құжаттарының алдына қоймайтын жұмыс жоқ. Ертең, көп ұзамай бағдарламалау қажеттілікке айналады. Бұл сізге жеке көзқарас тұрғысынан да қатысты, егер сіз өзіңіздің ақшаңыз, денсаулығыңыз, отбасыңыз сияқты маңызды нәрселерді сеніп тапсыратын бағдарламаларда не болатынын білу мен үшін қисынды нәрсе, өйткені олардың шектеулерін сіз олардың қалай болатынын білсеңіз ғана біле аласыз. жұмыс істеу және оны білу үшін сізге бағдарламалауды білу қажет.

      Мен басқалар әлдеқайда тиімді шешпеген қандай мәселелерді шеше аламын?

      -Сен сізді таңқалар едіңіз Мүмкіндіктер бүгін талап етіледі және шындықты айту үшін әлемде ең жақсы бағдарламашылардың болуы маңызды емес, жұмыс әрқашан әзірлеушілердің жұмыс қабілеттілігінен көп болады, мен мұны Gentoo-да тексере аламын, сол жерде - бұл ядро ​​жасаушылар, Google, Sony және т.с.с. жұмыс жасайтын адамдар. бәрімізге ортақ нәрсе - ешкімде күткен барлық жұмысты орындай алатындай уақыт болмайды.

      Неліктен бұрыннан бар жақсы және тәжірибелі бағдарламашылармен бағдарламалау тілін үйрену керек?

      -Бұл екінші сұраққа жауап береді 😉 Бірақ енді мен қосарым, ұрпақтар бұрыннан жасалған жұмысты қолдай білуі керек, демек, мен сол «тәжірибелі» жасаушылар біртіндеп жойылып кетеді, ал бұл қажет болады « жас »Әзірлеушілер жауапкершілікті өз мойнына алады және циклдің сақталуына көмектеседі, жас және тәжірибесіз адамдар жоқ қоғам уақыт өте келе жоғалып кетуге бейім, өйткені білім беру мүмкіндігі болмайды.

      Мен нені жоспарлаймын?

      -Бұл жауап беру ең қиын нәрсе шығар, бірақ мен сізге мысал келтіруге тырысамын, мен жақында GNOME 24 және оның Уэллендке қосылуымен Shutter сияқты бағдарламалардың скриншоттар түсіруіне жол бермейтін проблемалардан зардап шектім. Бұл мен үшін қиындық туғызады, өйткені мен мақалаларымды жазған кезде мен сізге не айтатынымды көрсетуім керек 🙂 айналаға біраз қарап отырып, мен GNOME скриншот қосымшасына келдім, тіпті аз дегенде «минималист». Оның функцияларының арасында экрандық аймақ түсіруге болады, бірақ егер мен фотоны жақсы түсірмесем не болады? Мен кетіп, бағдарламаға қайта кіруім керек, бір нәрсе жалықтырады, «қайтадан ал» деген батырма немесе тағы бір нәрсе маған кетіп, қайта кірмей-ақ жаңа түсірілім жасауға мүмкіндік береді. кішкентай бағдарламалау жобасы, мен ешқашан GNOME шеңберінде ешнәрсе бағдарламалаған емеспін, сондықтан мен өзімнің «патчымды» жаңа батырмамен жібермес бұрын көп нәрсені үйренетінім анық, бірақ мен жолда бағдарламалауды үйренемін және сәл сәттілікпен ерекшелік бұл бәріне қол жетімді болған кезде бірнеше адамға көмек болады.

      Бұл мысал, бұл қарапайым нәрсе және оны кез-келген басқа «білгір» бағдарламашы жасауы мүмкін еді, бірақ уақыттың жетіспеушілігіне байланысты ол ондай болған жоқ, енді мен бұны жасай аламын ол супер бағдарламашы болмай-ақ.

      Енді сіз жиі қолданатын бағдарламалық жасақтамадан сіздің өміріңізді «жеңілдететін» нәрсе табу сізге ғана байланысты, оның әсемдігі мынада, егер мен сізге келесі мақалаларда айтатын кеңестерге құлақ ассақ, тіл маңызды емес, өйткені сіз оқып жатқан кодты түсінудің негіздерін білесіз және оны қалағаныңызша жасау үшін өзгертесіз, бұл өте ерекше сезім 🙂

      Сәлем және тағы да рахмет

      1.    ешкім дижо

        Менің ойымша, gnome түсіретін бағдарламаны ашқаннан кейін, ең оңай нәрсе - пернелер тіркесіміне өтіп, белсенді терезені түсіру үшін барлық басып шығаруды басу үшін үш комбинацияны басып шығару және түсірілімнен таңдау жасау үшін супер басып шығару. аймақ, қол жетімді төте жолдар қазірдің өзінде қол жетімді, тек оларды тағайындау керек

        1.    ChrisADR дижо

          Сондықтан біз сізге мысал келтіреміз 🙂 өйткені бұл батырма сияқты кішігірім нәрселер бағдарламалау болып табылады, олар басқаларға байқамай қалуы мүмкін болғандықтан, кейбіреулерге көмектесе алады, бірақ олар басты мақсатқа сәйкес келеді, бағдарламалауды үйренуге көмектеседі және жаңа мүмкіндіктерге жол береді, Осы батырмадан кейін көптеген нәрселерді бастауға болады, мысалы сеанстарды басқару, немесе түсірілген барлық фотосуреттерді алдын ала қарау экраны немесе қысқасы, көптеген нәрселер. Идеясы, сіз қызығушылығыңызды тудыратын нәрсені табасыз, жүйеңізде жұмыс жасайтын кез-келген бағдарламалық жасақтама уақыттың жетіспеушілігіне немесе персоналдың әлі орындалмағанына байланысты жетілдірулерге немесе жаңа мүмкіндіктерге мұқтаж болуы мүмкін 🙂

      2.    mvr1981 дижо

        Сізге рахмет. өте жақсы жауаптар.

    2.    Гильермо дижо

      Бұл салада кәсіби маман болмайтын адам үшін олардың қандай ортада жұмыс жасайтынын білу керек, әкімшілік тапсырмалар үшін де, директивалар үшін де білу қызықты болуы мүмкін, мысалы, Python / Basic және оны қалай білуге ​​болады LibreOffice немесе MS Office сияқты кеңсе пакеттеріндегі макростарды бағдарламалау. Бұл сізге немесе сізді қоршаған басқа жұмысшыларға бірнеше сағаттық жұмысты үнемдеуге мүмкіндік беретін және кез-келген қайталанатын тапсырманы орындауды сұрайтын уақыттар болады, сіз компанияның мәліметтер базасымен байланыс орнатқаннан кейін компанияның негізгі коэффициенттерін жылдам есептеу үшін бақылау тақтасын құра аласыз және SQL сұранысын орындау.
      Барлығы сияқты, егер сіз өзіңіздің қолыңыздағы құралдарды білсеңіз, сіз оны қалай тиімді пайдалану туралы ойлана аласыз. Барлығы ойдан шығарылған емес.

  7.   Марсело дижо

    Гильермо, сізбен келісесіз, «бәрі де ойлап табыла бермейді» және ойлап тапқандар өзгеріске ұшырайды. Сіз құралдарды барынша тиімді пайдаланып, қажеттіліктеріңізге сай құралды қолдануыңыз керек.

  8.   Рикардо дижо

    Бағдарламалау үшін ең алдымен ағылшын тілі үйренеді, содан кейін оларды қызықтыратын және оларға әдемі болып көрінетін тіл.

    1.    ChrisADR дижо

      Мен бұны жазған жоқпын, бірақ шынымен де 🙂 ағылшын тілін білу көп көмек береді, өйткені көптеген тілдер оларда жазылған, сонымен қатар алғашқы қолмен берілген ақпараттың көп мөлшері sharing Бөліскеніңіз үшін көп рахмет

  9.   Рубен Сальгадо дижо

    Мотивациядан басқа керемет мақала.

    1.    ChrisADR дижо

      Өте мейірімді, көп рахмет 🙂 Сәлемдесу

  10.   Гонсало Мартинес дижо

    Бағдарламалау дегеніміз - бұл пайымдауды және оны осы нұсқаулыққа қалай аудару керектігін білу.

    Мақалаға қатысты екі түсініктеме:

    1) Менің 10 жылға жуық бағдарламалау мұғалімі ретіндегі тәжірибеме сүйене отырып, сіз қай тілді үйренетініңіз маңызды емес, қалай оқитыныңыз және оның қаншалықты күрделі екендігі маңызды.

    Менің ойымша, құрылымды түрде үйренуге болатын, содан кейін басқа күрделі нәрселерге ауысатын тіл, Java сияқты тілден басынан бастап оңай емес.

    Бірнеше жолдан гөрі C немесе Pascal-дағы Hello World сияқты нәрсені үйрену оңай (Pascal жағдайындағы PROGRAM, немесе #include C) жағдайда сіз алгоритмді құра аласыз және бағдарламаны оның логикасымен тікелей кодтай аласыз, өйткені Java-да өзіне класс, әдіс қажет, және жаңадан бастаушы үшін ақпараттың шамадан тыс жүктелуі қажет кейбір басқа нәрселер қажет, және бұл басқа нәрсеге назар аудармауы мүмкін, бірақ олар бар ұғымдар, және менің ойымша, заттарды елемеу үйренудің жақсы тәсілі емес, әсіресе тіл оларды қолдануға мәжбүр етсе. Бұл бірінші рет мақсатты жаттығуды М-16-дан бастап, жартылай автоматты режимде бірнеше ай бойы атуды тапанша тәрізді тұтқаны екі қолмен ұстау сияқты.

    2) Тілдің түсіндірілуі немесе жинақталуы тілдің өзіне емес, оның орындалуына байланысты. Мысалы, егер Python қолданылса, wsgi пайдаланатын веб-бағдарлама үшін (не apache-де mod_wsgi, не Nginx үшін uwsgi), python коды тиісті модульді іске қосқанда, .pyc файлдарын жасағанда құрастырылады

    Java-ға арналған екілік файл генераторлары (байт-кодтың орнына жергілікті екілік файлдар шығарады) немесе php сценарийлерін таза екілік файлдарда құрастырушылар бар.

    PHP туралы не айтатын болсақ, бұл басқа уақытта ойластырылған және сол кезде болмаған аспектілерді ескермей, басқа дәуірде жасалған тіл. Оның ең көп қолданылатыны оны әлемдегі кез-келген нәрсеге жақсылыққа айналдырмайтыны анық, бірақ шындық бар: бұл барлық бағдарламалауда жұмысқа орналасу мүмкіндігі бар тіл. Мұны білу сізге ұнамаса да зиян тигізбейді.

    Мен бірнеше жыл бойы жүйелік әкімші болып жұмыс істеп, әзірлеуші ​​қызметін тастап кеткен мен де жиі PHP кодын бір нәрсеге салуым керек.

    1.    ChrisADR дижо

      Сәлем, Гонсало, бөліскеніңіз үшін рақмет,

      Әрине, қажет емес ақпараттың шамадан тыс жүктелуі туралы айту, сол тілді түсінуге немесе құрастыруға болатындығын білу - бұл қазіргі уақытта қажет емес нәрсе 🙂 Әрине, іске асыру маңызды, бірақ егер біз осы деңгейде десек, біз шатасудан басқа ештеңе жасамаймыз. Дәл сол сияқты бағдарламалаудың объектілік-бағдарлау мәселелері шешілмейді немесе адамдардың басын айналдырмас үшін біртіндеп мөлшерлеу керек басқа ұғымдар.

      Кеңістік шектеулі болғандықтан, жазбаның басты мақсаты - бағдарламалауды қалайтын оқырмандарға тілдердің екі ұлы әлемі бар екенін, «дәстүрлі» түсіндірілетіндердің «қарапайым» екенін, «дәстүрлі» жинақталған сәл көбірек екенін көрсету. «күрделі», бірақ анағұрлым берік түсінікке ие болу үшін бұл күрделілік деңгейіне ие болу керек және тілді таңдау әркімнің өз қолында, өйткені бағдарламалау тәсіліне байланысты олар өздерінің сүйікті жобаларын таңдай алады және сол уақытта уақыт олар не оқығанын түсінеді және / немесе жазады will

      Тағы да көп рахмет, сәлем.

      1.    Гонсало Мартинес дижо

        Бұл қате, жинақталған немесе түсіндірілетін тілдер жоқ, әр тілге, әр түрлі жағдайда да, аудармашылар мен компиляторлар бар.

        Қазір оны еске түсіру артық ақпарат емес, мұндай мәлімдеме жасау қате. Менің ойымша, егер сіз ақпаратты шамадан тыс жүктегіңіз келмесе, аудармашыларды елемеу тиімдірек болар еді.

        1.    ChrisADR дижо

          Түсіндіруге рақмет, мен тақырыпқа оралған кезде ескеремін. Алақай!

  11.   Ares дижо

    PHP қолайсыздыққа ұшырағанын ескеріп, сервер жағына қандай тіл ұсынасыз?
    Деректер базасы үшін де сол сияқты, mySQL-ден жақсы және заманауи нәрсе болатынын білмеймін.

    1.    ChrisADR дижо

      PHP-дің ықыласынан түскен жоқ ... Кез-келген тілде өзінің өмірлік циклі болады, ал PHP-дің өзі «жетілген» шкалаға енетін тіл болып табылады, бұл оны тұрақтылық бәрінен жоғары тұрған іскерлік деңгейде пайдалы етеді ... Ұнайды php-ге қарағанда «жетілген» java-да дамыған кейбір банктер және оның ізбасарлары мен жек көрушілері бар ... Және COBOL туралы айтпағанда ...

      Егер сіз іздейтін нәрсе біртектілік пен заманауи болса, javascript «толық стек жасаушылардың» таңдаулыларының біріне айналуда, дегенмен рубин парадигмасы немесе питонның «қарапайымдылығы» жақсы сілтемелер болып табылады .... Қажеттілікке байланысты перл де болуы мүмкін

      Қазіргі уақытта ORM (объектілік реляциялық карталар) реляциялық мәліметтермен жұмыс істеуге үлкен күш жұмсауда. Ол SQL синтаксисінен сынып пен атрибуттарды өңдеуге ауысады ... Барлық дерлік тілдер (барлығы болмаса) кейбір ОРМ-ны басқарады.

      . Mongo DB - бұл реляциялық мәліметтер базасына балама болып табылады, ол өте маңызды болды, бірақ оның артықшылықтары мен кемшіліктерін біліп, нақты қажеттілікке байланысты ең жақсы шешім болатындығын растау қажет.

      Бұл сізге көмектеседі деп сенемін, сәлем 🙂

      1.    Ares дижо

        Рахмет, мен оны тексеремін.

      2.    Ares дижо

        Мен ұмытып қалдым.

        Linux-те JAVA-мен жұмыс істеуге маған не кеңес бересіз?.
        Егер сіз еркін және жабық деп жақсы айыра білсеңіз.

        1.    ChrisADR дижо

          Eclipse және NetBeans - бұл ашық код, бұл таза бағдарламалық жасақтаманың бар-жоғына сенімді емеспін, vim-ді қолданатын әдетім бар, өйткені кейде код мөлшері бүкіл IDE-ді баяу қолданады және қателіктерге бейім болады. Сәлемдесу 🙂

        2.    PaulZeta дижо

          Linux-те java-мен жұмыс істеу үшін мен IntelliJ қолданамын, сізге кеңес беремін.

          1.    ChrisADR дижо

            PS, IntelliJ - меншікті бағдарламалық жасақтама 🙂

  12.   je дижо

    Жігіттер де есінде ... Мен банкте жұмыс істеймін және бағдарламалау тілдері SQL және Stored процедураларын бірінші орынға қою үшін екінші орын алады деп айтамын.

    1.    Гонсало Мартинес дижо

      Сіз оларды сақталған процедураларды ескеруіңіз керек, бірақ қозғалтқыштар арасында портативті тілді қолданбай, ең болмағанда менің тәжірибеме сүйенетін болсам, бұл басқа нұсқа болмаса, әрқашан оларды болдырмауға тырысады.