Эскирбеген же убакытка көз каранды болбогон билимди жана көндүмдөрдү карап чыгыңыз.

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

Технологиянын эскириши

Чынын айтканда фундамент эч качан эскирбейт. Ал эми калганы процесс ичинде тез убакытта жетиштирилет. Жаңы фреймворк болобу же программалоо жолу болобу, башка методология же жаңы тил болобу, эгерде базаңыз бар болсо мунун баары аябай тез убакытта үйрөнүлөт. Бирок айрыкча мындан сырткары ар дайым программисттер өз мээсин өнүктүрүп жүрүш керек. Ошого бул процесстин бир нече багыты бар.

Логикалык ой жүгүртүү

Биринчиси - логикалык ой жүгүртүү, адамдын логикалык түшүнүктөрдү жана конструкцияларды колдонгон ой жүгүртүү процесси. Логикалык ой жүгүртүү ар бир программист үчүн өтө маанилүү, ошондуктан аны өркүндөтүүнүн көптөгөн жолдору бар.

Математика

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

Логикалык тапшырмалар

Логикалык ой жүгүртүүнү өнүктүрүүнүн экинчи жолу - логикалык маселелерди чечүү. Ар кандай деңгээлдеги көптөгөн тапшырмаларды камтыган сонун сайт бар: www.braingames.ru. Ал жерде көп адамдар отурушат, рейтингдер бар, жана бул сиздин мээңизди катырткан сонун жолу болот. Ошол эле учурда, сиз логикалык көйгөйлөрдү чечүүдө абдан мыкты болсоңуз да программист болууга анча деле жакшы эмес болушуңуз мүмкүн, андыктан өнүгүү ар тараптуу болушу керек.

Алгоритмдер

Үчүнчү ыкма - алгоритмдерди үйрөнүү. Бул программа боюнча окуп жатканда же ушул кесипке киргенде окууга сунушталган алгоритмдер жөнүндө сөз болуп жатат. Алар ар кандай, кээ бирлери өтө татаал, кээ бир күчтүү математиксиз түшүнүүгө мүмкүн болбогон нерселер бар, бирок жалпысынан ар кандай багыттардагы базалык деңгээлде алгоритмдер өтө жөнөкөй. Алгоритмдердин кандайча иштээрин билүү жана түшүнүү көп нерсеге жардам берет.

Абстрактуу ой жүгүртүү

Негизги билимдин кийинки маанилүү аспектиси - абстракттуу ой жүгүртүү, адам бул кырдаалды анча-мынча майда-чүйдөсөдөн чыгарып, ага бүтүндөй карай алган ой процесси. Абстрактуу ой жүгүртүү үч форманы камтыйт: түшүнүк, ой-пикир, жыйынтык.

Абстрактуу ой жүгүртүүнүн төмөнкү өзгөчөлүктөрү бар:

  • сезимдерге таасир бербей, айлана-чөйрөнү түшүнүү

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

  • Үлгүлөрдү аныктоо үчүн жалпылоо

Жалпылаштыруу, чындыгында программанын маңызы, кандайдыр бир ири программалык тутумдарды түзүү жөнүндө сөз болгондо, абстракттоо, эң обочолонгон тутумдарды түзүү жана алардын өз ара аракеттешүүсүн камсыз кылуу үчүн алардын бөлүктөрүнүн ортосунда туура интерфейстерди түзүү жөндөмү. "Абстракциянын тоскоолдуктары" деген түшүнүк бар - абстракция катмарлары катмар менен курулганда жана ар бир жогорку деңгээлде төмөнкү деңгээлдин чоо-жайы көрүнбөйт - бул тутумду эсиңизде сактап, аны менен иштөөгө мүмкүндүк берген эң маанилүү принцип. Адам 7 нерсени плюс же минус 2 нерседе кармаса болот, ошондуктан бир эле учурда көп сандагы түшүнүктөр менен иштөө - мээдеги жарылуу 😊.

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

Так илимдер

Так илимдер математика гана эмес, физика, химия жана атүгүл биологиянын айрым бөлүктөрү.

Логика жана акыл оюндары

Бул жерге ошондой эле braingames кирет, бирок андан сырткары шахмат, шашки же преферанс деген оюндар да туура келет.

Программалоо :)

Ну и, конечно, программалоо да абстрактуу ой жүгүртүүнү өнүктүрүүгө жардам берет. Бирок, башка ыкмалар жөнүндө унутпоо жана аларды айкалышта колдонуу керек.

Билимди өнүктүрүү

Эми иштеп-чыгуучу үчүн кайсы билим керектигин аныктап коёбуз.
(орусча түшүндүрүп кетейин, себеби кыргызчасында кээ бир жерлерин түшүнбөй калышыбыз мүмкүн)

Фундамент: математическая подготовка

Теория множеств

Особенно важная дисциплина в работе с базами данных. SQL построен на реляционной алгебре, и в базах активно используются понятия теории множеств. Таблицы, выборки — всё это берёт начало в теории множеств.

Логика

Логика — это то, с чем сталкивается каждый программист каждый день в своей работе. Логика является важнейшей основой программирования — свой путь в профессии нужно начинать с её изучения.

Дискретная математика

Дискретная математика включает в себя достаточно много разделов: начиная от графов и заканчивая автоматами. Большинство разделов дискретной математики так или иначе воплощено в информатике.

Лямбда-исчисление

И последнее — это лямбда-исчисление, которое отлично помогает в развитии абстрактного мышления. Представьте себе систему, в которой числа и операции над ними (арифметика) это функции. Благодаря лямбда-исчислению такую систему можно создать и она будет вести себя абсолютно так, как ведут себя обычные числа.

Кроме того, с понятием лямбда-функций вы столкнетесь практически во всех языках.

Фундамент: информатика

Ближайшая к компьютерам область знаний — это информатика. И нас интересуют следующие ниже разделы информатики.

Системы счисления

Самое базовое понятие — системы счисления — это системы записи чисел с помощью определенного набора цифр. Почему они так важны? В основе программ и компьютеров лежит двоичная система счисления, но в повседневной жизни мы используем десятеричную систему счисления. Обязательно нужно знать и понимать, как устроены системы счисления и уметь переводить числа из одной системы счисления в другую.

Структуры данных

Структуры данных в информатике — это способ представления информации, с помощью которого её отдельно взятые элементы образуют нечто единое. В языках программирования реализовано несколько распространенных структур данных, таких как массивы, числа, строки, файлы. Но и кроме них существует множество абстрактных структур данных, которые могут создаваться самими разработчиками с использованием средств языка.

Алгоритмы

Наряду с системами счисления и структурами данных алгоритмы — основа основ информатики. Для того, чтобы быть экспертом в алгоритмах, нужно не только вдоль и поперёк изучить сами алгоритмы, но и очень хорошо знать математику — а на это уйдёт приличное количество времени. Хорошая новость — для начала этого и не требуется. Главное — понимать базовые алгоритмы на базовых структурах данных и вообще просто иметь понятие о том, что они из себя представляют и как работают. Какие-то конкретные алгоритмы приходят уже в процессе работы или обучения. Не бывает такого, что программист заранее знает все возможные алгоритмы и может запросто выдать нужный алгоритм, подходящий для конкретной ситуации.

Фундамент: парадигмы

Теперь поговорим о языках программирования и о том, какие подходы к программированию в них реализованы. Такие подходы называются парадигмами программирования. Парадигма программирования влияет на всё, что происходит в вашем коде: то, как строится программа, на каких принципах она работает. Изучение парадигм помогает стать намного более сильным разработчиком, чем изучение конкретных особенностей конкретного языка или просто переход из одного языка в другой язык той же парадигмы.

Существует множество различных парадигм, но на самом верхнем уровне — 3 базовых: императивная, функциональная, логическая.

Императивное программирование

Императивное программирование описывает, как решить задачу и представить результат, используя инструкции (команды). Большинство мейнстримовых языков являются императивными языками программирования: это Java, это C#, это все скриптовые языки, Ruby, PHP, Python и многие другие.

Функциональное (декларативное) программирование

Есть очень мощная парадигма, которая является противоположностью императивного программирования — это функциональное (или декларативное) программирование. Эта парадигма описывает, что представляет собой задача и ожидаемый результат её решения. В неё входят такие языки как Clojure, Erlang, Haskell, Scala и многие другие.

Логическое программирование

Язык логического программирования, с которым многие сталкивались в институте, называется Prolog — тоже очень хороший пример того, как можно по-другому смотреть на вещи.

Фундамент: компьютерные характеристики

Архитектура компьютера

Если говорить про железо, то здесь важно понимание архитектуры компьютера, хотя, опять же, всё очень сильно зависит от области разработки. Большинству прикладных программистов, которые работают в веб-сфере, разработке десктопных, мобильных приложений нужен просто общий обзор, понимание того, что такое регистры, как работает процесс взаимодействия с оперативной памятью. Всё перечисленное можно почерпнуть из одной-единственной книги, которая называется "Код: тайный язык информатики" Чарльза Петцольда. Эта книга рекомендуется к прочтению — она читается как захватывающий роман, и действительно даст хорошее понимание того, как устроен компьютер и даже как работает Assembler.

Фундамент: софт

Перейдем уже непосредственно к тому, как устроен современный софт. Вот что вам нужно знать.

Операционные системы

Нужно очень хорошо понимать принципы работы операционных систем и какую роль они выполняют, поскольку при работе с любым языком программирования всё взаимодействие всегда происходит в рамках одной или нескольких операционных систем. У многих программистов, особенно после университета, складывается такое ощущение и мнение, что знание операционных систем важно только для системных программистов, которые пишут софт, связанный прямо с операционной системой и работающий в рамках неё. Это не так. Огромное количество вопросов, которые задают новички, чаще всего связаны с частными случаями каких-то базовых вещей, находящихся внутри операционной системы. Изучение и понимание какой-нибудь одной базовой вещи может занять всего лишь день, но в дальнейшем способно дать огромную фору перед другими, поскольку позволит понимать целый пласт проблем, с которыми в конечном итоге сталкивается разработчик. Такие проблемы каждый раз могут немного отличаться друг от друга, но быть основаны на одной и той же особенности операционной системы. Те, кто не усвоил эту особенность, не видят связи и обречены постоянно тратить время на поиск решения. Поэтому знание операционных систем — важное условие профессионализма разработчика. Существует множество книг, посвященных операционным системам, которые дают понимание их базовых принципов, не копая глубоко.

Сети и протоколы

В век интернета в своей работе разработчик часто сталкивается с сетями и различными протоколами. Нужно иметь представление об основных протоколах, зачем они нужны, и как работают.

Базы данных

Нельзя забывать и про базы данных, поскольку работать придётся с огромными объемами информации, которые организуются, хранятся и которыми оперируют именно базы данных.

Компиляторы и интерпретаторы

Помимо понимания отличия компиляторов от интерпретаторов, здесь необходимо знать, как исполняется код, как можно взаимодействовать с ним, как идёт отработка ошибок. Плюс сюда входят ещё такие вещи как потоки и многое-многое другое.

Айрыкча

Мындан башка дагы көп инструменттер бар. Алардын эң популярдуулары:

Владение командной строкой

Важно владеть командной строкой и работать с ней быстро и эффективно, знать как и какие команды в ней можно вызывать.

Системы контроля версий

Любой современный разработчик должен знать, что такое системы контроля версий и как управлять кодом — от этого никуда не деться. Стандартом считается Git, и без этого инструмента, в принципе, нельзя вести разработку.

Автоматизированное тестирование

Кроме этого, важным понятием является автоматизированное тестирование, и на определенном уровне разработки, с определенного уровня проектов без тестирования обходиться вообще нельзя. Автоматизированное тестирование — очень простая техника, которая изучается за короткое время и после этого используется всю оставшуюся жизнь.

Управление конфигурацией

Существует несколько систем управления конфигурацией, таких как Ansible. Они используются для автоматизации настройки и развертывания программного обеспечения и позволяют сэкономить кучу времени для более насущных задач.

Кыргызча айтканда: Математика, логика, жана информатика сабактардын мектепте болобу, же университеттеби эң базовый жактарын эске алсаңыз, программалоого тез-тезден үйрөнүп кетесиз!