Komputery Okna Internet

Język wysokiego poziomu do pisania programów. Wybór języka programowania. Poziomy języka programowania

Różne języki programowania i ich obszary zastosowań. Wykład w Yandex

Nasz pierwszy w tym roku post postanowiliśmy poświęcić bardzo podstawowemu tematowi, o którym prelekcję wygłosiliśmy w Small SHAD. Zaangażują się w nią licealiści, którzy interesują się technologią, stąd specyfika prezentacji – prelekcja będzie szczególnie interesująca dla tych, którzy dopiero zaczynają programować i zastanawiają się, w jakim kierunku się rozwijać. Dla nich Yandex ma kurs „Wprowadzenie do programowania (C++)”, który można odbyć na platformie Stepic.org.

Zakres programów i aplikacji

Pisanie cyklu kompilacji może prowadzić do mniej lub bardziej poważnych opóźnień w rozwoju programu. Ich składnia jest często zbliżona do języków ludzkich, co oznacza, że ​​nawet niedoświadczeni programiści mogą szybko czytać programy. Ponadto często oferują elementy składni, które tylko języki programowania niskiego poziomu mogą dostarczyć tylko za pośrednictwem bibliotek. Najlepsze przykłady są wbudowanymi tablicami mieszającymi. Języki skryptowe są w większości bezwstydne, co jest zaletą, a może być wadą.

Wykładowca Mikhail Gustokashin - kurator programów akademickich w Yandex, dyrektor Centrum Olimpiad Studenckich, Wydział Informatyki, HSE. Michaił wyszkolił dziesiątki zwycięzców i laureatów Ogólnorosyjskich Olimpiad Programowania.

W ramach wykładu opowiada się o tym, czym są języki programowania, czym się różnią, jak się pojawiły i które są lepsze, a które gorsze. Na początku porozmawiamy trochę o historii języków – jak się pojawiły, jak ludzie zaczęli programować, jak wszystko się rozwijało, co dzieje się teraz. W drugiej części zostanie poruszony, do jakich zadań nadaje się odpowiedni język, jak „wybrać swój ulubiony język i cieszyć się życiem”. Prowadzący opowie też trochę o tym, jak jego zdaniem się tego wszystkiego nauczyć, a potem znaleźć pracę.

Języki skryptowe również często zapewniają wbudowane zarządzanie pamięcią i nie zapewniają arytmetyki wskaźników. Szczególnie w przypadku zadań intensywnie wykorzystujących dane, wady szybkości języków skryptowych stają się jasne - istnieją różne metody, które próbują obejść tę wadę.

W krótkiej historii komputera wynaleziono już setki języków programowania. Jednak w danym momencie istniało prawdopodobnie tylko kilkanaście popularnych języków programowania. Pojawiają się języki programowania i języki programowania. Niektóre z nich są nawet bardzo znane, ale większość nie. Lista świetnych języków programowania zmienia się, ale dzieje się to bardzo powoli. Większość programistów dużo się uczy i używa inne języki w swojej karierze. Ale kiedy zrozumiesz główną ideę, stosunkowo łatwo się jej nauczyć nowy język jak mówi się, że łacina pomaga łatwiej uczyć się różnych nowych języków.

Jak zawsze pod wycięciem znajduje się szczegółowy zapis wykładu, dzięki któremu można nawigować po jego treści.

Historia języków programowania

Zacznijmy od początku. Na początku komputery nie miały nawet klawiatury! Czyli wszystko było bardzo źle - nie mieli klawiatury ani ekranu, mieli karty dziurkowane (to są takie rzeczy z dziurami lub bez dziur). W związku z tym albo szpilki były tam wbijane, albo świeciły tam światłem. Jeśli jest dziura (lub odwrotnie), oznaczało to zero lub jeden. A programy w tamtych czasach były pisane za pomocą kodów maszynowych - każda operacja w komputerze (dodawanie, odejmowanie, niektóre bardziej złożone operacje) miała jakiś rodzaj kodu maszynowego. Ludzie sami wybierali ten kod z tabliczki, przeróżne adresy w pamięci, wszystko wybijali rękami i wciskali do czytnika - i wszystko było policzone. Oczywiście praca programisty nie była wtedy chyba zbyt ciekawa – robienie dziur – a wraz z rozwojem nauki i technologii zaczęli oczywiście wymyślać różnego rodzaju bardziej „ciekawe” rzeczy. Na przykład asembler (Assembler), który już trochę ułatwił życie.

Jak ułatwił życie? Zamiast pamiętać, że istniał jakiś „magiczny” kod dla zespołu, użyto wszelkiego rodzaju słów podobnych do „człowieka” język angielski- trochę add lub mov - po czym wyliczono rejestry lub obszary pamięci, z którymi te operacje mają być wykonane. Ale jasne jest, że generalnie wymagało to również wystarczająco dużego wysiłku umysłowego, aby zapamiętać w jakim rejestrze mamy, co leży, gdzie jakie zmienne i co ogólnie się dzieje. Dlaczego się to stało? Ponieważ komputery były „głupi” i nie mogły zrozumieć niczego bardziej „mądrego”. Tak naprawdę kompilacja kodu maszynowego z asemblera również wymaga czasu, pamięci (w tamtym czasie oczywiście było jej za mało).

Przyjrzymy się niektórym z najpopularniejszych języków później. Ale jeśli jesteś w tym nowy, zadaj sobie pytanie: dlaczego jest tak wiele różnych języków programowania, skoro wszystko, co robimy, to wydawanie prostych poleceń komputerowi? Dlaczego nie ma jednego języka programowania, w którym można zrobić wszystko? Cóż, ten język istnieje. Ale to nie jest jeden z nich. Każdy komputer, w tym laptop, smartfon, serwer lub moja lodówka, jeśli jest to jeden z tych inteligentnych, ma mały mózg, wbudowaną jednostkę centralną.

W życiu codziennym mówimy, że piszemy kod, który komputer rozumie lub jest w większości, ale nie ściśle, niepoprawny. To jedyne prawdziwe instrukcje, które działają bezpośrednio na komputerze. Powstaje zatem pytanie: dlaczego nie piszemy kodu maszynowego? No bo to po prostu niemożliwe. Są to operacje numeryczne, najmniejsze instrukcje które są wykonywane na najmniejszym możliwym poziomie w komputerze. Kod jest przeznaczony tylko dla maszyny, a nie dla nas ludzi. Inny model komputera oznacza inny kod.

Stopniowo stało się jasne, że tworzenie tak dużych, złożonych programów jest bardzo trudne. Wydajność programisty w tych poleceniach była ekstremalnie niska – to znaczy pisał kilka linijek dziennie (sensowne), a każda linijka nie robiła nic specjalnego – jakieś proste operacje arytmetyczne. A ludzie chcieli, aby języki były bardziej podobne do języka ludzkiego, w szczególności do angielskiego, aby pisanie programów było łatwiejsze i wygodniejsze. I jedziemy!

Pisanie programu komputerowego w kodzie maszynowym jest jak kopanie tunelu w Alpach tylko starą łyżką, aluminiową łyżeczką do herbaty. Teoretycznie do pomyślenia, ale praktycznie niemożliwe. Wszystkie języki programowania są właściwie kompromisem. Zostały wynalezione, aby wypełnić lukę między komputerami a ludźmi. Niektóre języki programowania są bardzo zbliżone do kodów maszynowych. Następny to prawdopodobnie Assembler. Ogólnie rzecz biorąc, im język jest bliższy kodom maszynowym, tym trudniej go zaprogramować i tym więcej trzeba wiedzieć o używanym sprzęcie.

Stare i martwe języki

Fortran stał się jednym z pierwszych języków. Nawiasem mówiąc, został również znokautowany na kartach dziurkowanych - były specjalne karty dziurkowane do wybijania programów Fortran. Ale jeśli weźmiesz teraz tego Fortrana - moim zdaniem jest to nawet gdzieś pomiędzy 50-60. pojawił się - i spróbuj coś na nim napisać, będzie to dla ciebie bardzo nieprzyjemne, gwarantuję! Współczesny Fortran wciąż żyje, ale jest zupełnie inny od tego, czym był kiedyś.

Inne języki – teraz napiszę jedną rzecz, o której pewnie słyszeliście, a potem tylko na wszelkich wydarzeniach, na których opowiadają o historii programowania – to jest COBOL. Był to język pisania aplikacji biznesowych. Czym są aplikacje biznesowe? Jakiekolwiek transakcje w bankach, coś jeszcze, wszystko to było napisane w Kobolu. Nie jest to oczywiście u nas zbyt popularne. Myślę, że trudno znaleźć programistę na Kobolu w Moskwie. I gdzieś nie w Moskwie - z jeszcze większym trudem. Ale, co zaskakujące, nawet 10 lat temu ponad połowa całego kodu napisanego przez ludzkość została napisana w Cobolu. I do tej pory znaczna część wszystkich transakcji bankowych odbywa się za pomocą napisanych w nim programów (COBOL), a ludzie wciąż coś na nim piszą.

Do czego służą języki programowania?

To właśnie nazywamy językiem niskiego poziomu. Ten język nazywa się językiem wysokiego poziomu. Jest o wiele łatwiejszy do zrozumienia i zaprogramowania. Ale oczywiście są wolniejsze do wykonania, ponieważ komputer musi je przetłumaczyć. Jednak szybkość nie jest obecnie ważna, dlatego w tym samouczku skupiamy się na tych językach wysokiego poziomu. Ale bez względu na to, co piszemy, zawsze musi to zostać przetłumaczone na kod maszynowy przed wykonaniem. Więc chociaż kod maszynowy jest tak ważny, nie obchodzi nas to.

Jest też język „śmieszny”, nazywał się Algol (wersja 68, która charakteryzuje rok jego powstania). Jest to język algorytmiczny. Generalnie byli w stanie coś tam zrobić, ale teraz nie jesteśmy bardzo zainteresowani tym, co mogą zrobić. I na tym nasza wyprawa w starożytność i stosunkowo nieużywane języki może się zakończyć i przejść do tego, co wciąż żyje (i aktywnie żyje).

Musimy zrozumieć, o co chodzi, ale programowanie oznacza dla nas: piszemy źródło... Piszemy ten tak zwany kod źródłowy. Piszemy kod, a komputer tłumaczy go za nas. Aby to wyjaśnić, musisz wiedzieć, jak działa komputer i co oznacza programowanie.

Komputer składa się z wielu części, ale najważniejszy jest procesor, zwany także jednostką centralną. Oblicza zadania i częściowo koordynuje pracę komputera. Jeśli coś programujesz, dasz komputerowi instrukcje, które uruchamiasz. Aby zaprogramowany program był interaktywny, wejście, wynik to to, co widzimy na ekranie lub w postaci arkusza z drukarki. Byłaby to gra bez danych wejściowych, bez gry, ponieważ nie byłaby interaktywna. Istnieje wiele różnych typów danych wejściowych, ale najczęściej używanym jest wprowadzanie z klawiatury.

Stare, ale żywe języki

Algol został wynaleziony w Europie, a Fortranu używano głównie w Stanach – nie ma dużych różnic. Jaki trend jest widoczny? Na początku wszystko było trudne i żeby pisać trzeba było być prawie inżynierem, inżynierem elektrykiem, rozumieć gdzie są zamknięte jakie styki i coś jeszcze do programowania. Wtedy też trzeba było siedzieć z liśćmi i liczyć wspomnienie, opiekować się nim. I stopniowo wszystko stawało się prostsze, prostsze, prostsze, a potem jeszcze łatwiejsze dla programisty - jak najmniej myśleć o człowieku, jak najwięcej robić automatycznie. Mniej więcej pod koniec tego okresu (wykładowca wskazuje na Algola i Kobola) zaczynają pojawiać się języki, które w pewnym sensie „przetrwały” do dziś.

PODSTAWOWY. Być może niektórzy ludzie nadal coś na nim piszą, według przynajmniej Widziałem, że w niektórych instytucjach uczą w QBasic - takie niebieskie okno, w którym jest napisane "1989". Generalnie żyje „mocą i siłą”! Został wymyślony jako język dla nie-programistów. Programista był wówczas bardzo wyspecjalizowanym zawodem. A tutaj mówią do ciebie: „Tutaj mamy fajny język Basic i każda rozsądna osoba weźmie i napisze w nim program - łatwo”. Ponownie, ten BASIC i nowoczesny BASIC to ogromna różnica. Wszystkie te wiersze ponumerowane co 10, wszelkiego rodzaju GOTO i inne horrory - nie mają nic wspólnego z nowoczesnym BASIC-em, a nawet mają niewiele wspólnego z BASIC-em 89.

Historia języków programowania

Programowanie, przetwarzanie wejścia i generowanie wyjścia za pomocą operacji logicznych i matematycznych. Języki programowania to teksty, komputer odczytuje je i wykonuje. Ale to nie jest tak proste, jak napisanie tekstu w języku niemieckim lub angielskim, raczej jak w obcym języku, chińskim, ponieważ nie rozumiesz słowa. Językami programowania niczego nie potrafię wyjaśnić, są one przeznaczone tylko do wskazywania instrukcji komputerowi i mają tylko mały „słownik”. Oznacza to, że coś prostego, na przykład „niebo jest niebieskie”, nie powinno być rozumiane przez komputer, ponieważ nic nie wie i można je prawie tylko rozważyć.

Inną zabawną historią jest język pascal, szeroko znany w kręgach uniwersyteckich, głównie w Rosji i krajach byłego Związku Radzieckiego. Był i nadal jest używany w zaskakujący sposób jako język nauczania. W pozostałych częściach świata jest mniej powszechny, ale też żyje i ma się dobrze. Jest taka osoba Wirth - tutaj jest naukowcem, teoretykiem. Brał udział w dyskusji Algola, nie podobało mu się to, co się stało, i wymyślił własny język - Pascal. A potem firma Borland (a wcześniej wiele innych firm - w szczególności Apple był zaangażowany) wszystko zabrała i zrujnowała. Miał piękną teorię, smukłą - "wszystko będzie dobrze" - i tam zabrali i wypchali to, czego ludzie potrzebują do pracy. Cóż, nie wyszło tak ładnie, jak chciał.

Jakie języki programowania?

Dzisiejszy procesor może zrozumieć około 90 instrukcji, co robi. Ponieważ polecenia te są trudne do zrozumienia dla ludzi i mało kto potrafi programować, opracowano języki programowania wysokiego poziomu. Są dobrze rozumiane w porównaniu z językami niskiego poziomu, zwanymi również językami asemblerowymi i oferują ponad 90 predefiniowanych poleceń. Twoja przewaga to większa szybkość obliczeń.

Jaka jest różnica między wyższymi a niższymi językami programowania?

Po pierwsze, głębsze języki programowania są bliższe kodom maszynowym i zwykle są kompilowane.

I w końcu,. Xi został wynaleziony przez inżynierów. Jeśli Pascal został wymyślony przez naukowca, to C zostało wynalezione przez Kernighana i Ritchiego, pracowali jako inżynierowie w firmie Bell. Jak to się stało? W tamtych czasach nie można było napisać niczego systemowego w tych językach (prowadzący wskazuje na Fortran, COBOL, Algol). Co to jest „systemowe”? Na przykład system operacyjny, jakieś sterowniki, coś innego. Te języki były dla matematyki, dla biznesu, do tego wszystkiego. A wszystko inne zostało napisane w asemblerze. Było kilka języków, teraz są martwe, to znaczy język C nie pojawił się od razu z asemblera, ale przez pewne rzeczy pośrednie.

Kompilacja to tłumaczenie na wykonywalny język maszynowy lub kod bajtowy. Kod bajtowy jest ponad językiem maszynowym i dlatego potrzebuje interpretera, który następnie tłumaczy kod na język maszynowy. Zaletą tego jest niezależność od platformy, interpreter można zaprogramować dla każdego systemu operacyjnego. Minusem jest to, że języki interpretowane są wolniejsze niż języki kompilowane, szczególnie w tworzeniu gier - kluczowy argument za używaniem języka kompilowanego. Również języki programowania niższego poziomu nie mają automatyczny sterownik pamięci, ale podczas programowania muszą adresować wymaganą pamięć, co może przyspieszyć, ale jest to trudne.

Jaka jest istota? Kernighan i Ritchie uwielbiali bawić się zabawką Asteroids – statek kosmiczny leci, a asteroidy są, strzela do nich, a one się rozpadają. Mieli serwer, na którym grali, ale było tam dużo ludzi, a zabawka zwalniała. I dowiedzieli się gdzieś w swoim biurze, że mają jakiś komputer, którego nikt nie używa. Ale był problem - to była inna architektura, a gra została napisana w asemblerze.

Wyższe języki programowania są szczególnie odpowiednie dla początkujących i ze względu na niezależność typów danych dla początkujących. Niezależność typu danych oznacza, że ​​język programowania nie ma znaczenia, czy zmienna jest liczbowa, literowa czy inna.

Co jest potrzebne do programowania?

Na przykład musisz z góry znać typ wartości, w przeciwieństwie do języków skryptowych. Powiedzmy, że chcesz zaprogramować program. Czego potrzebujesz? Przede wszystkim komputer, który jest niezbędny do uruchomienia programu. Właściwie prawie tylko znajomość języka programowania. Więc na pewno masz wszystko, tylko to, co musisz napisać w edytorze, teraz możesz być zaskoczony. Polecenia są tym, co charakteryzuje język programowania za pomocą „gramatyki” i składni programowania.

Przepisali go, oczywiście, wcięli nawet niektóre funkcje, aby na nim zagrać. Ale to skłoniło ich do myślenia, że ​​przepisywanie za każdym razem na nową architekturę nie jest zbyt mądre. I postanowili napisać język wysokiego poziomu, który byłby odpowiedni do programowania systemowego, czyli w którym można by zarządzać pamięcią, w którym można by zrozumieć, gdzie coś jest i jak uzyskać dostęp do tych fragmentów pamięci . I tak pojawił się język C, który później miał ogromny wpływ na wszystko. Wszystkie z nich (prowadzący wskazuje na Algol, Fortran i inne wymienione języki) miały duży wpływ, ale C - tak...

Dlaczego gramatyka? Ponownie, nie jest trudno napisać tekst w języku niemieckim bez gramatyki, nie. Składnia jest zupełnie inna między inne języki programowania, ale jeśli potrafisz używać języka programowania, nie jest trudno nauczyć się nowego. Dlaczego składnia? Ponieważ komputer nie rozpoznaje początku i końca instrukcji, musisz powiedzieć mu, gdzie instrukcja się zaczyna, a gdzie kończy. Odbywa się to za pomocą średników, kropek, akapitów i różnych nawiasów.

Jakie elementy ma język programowania?

Ale to tylko niektóre z „zasad gramatycznych”, ale jeśli wiesz, że to już połowa czynszu. Istnieje wiele elementów, które język programowania musi wyjaśnić, a wszystkie z nich nie byłyby zbyt przydatne i tylko wprowadzałyby w błąd. Zamiast tego powinieneś już teraz wiedzieć, jak coś zaprogramować, wystarczy wiedzieć o podstawowych elementach. Jak wiadomo komputer nic nie rozumie, więc programista stara się dać komputerowi warunki matematyczne, aby wyjaśnić mu, że ma polecenie. Jeśli chcesz programować, potrzebujesz dobrego zrozumienia matematycznego i logicznego.

W związku z tym był to główny język Uniksa - systemu operacyjnego, który był wtedy jeszcze bardziej popularny niż jest teraz. A około lat 80. sytuacja wyglądała mniej więcej tak (wykładowca pokazuje w Basicu, C i innych wymienionych językach). Powiedzmy, że to wszystko już umarło po kryjomu (wykładowca wymazuje odniesienia do Assemblera, Fortrana i Algola)… A w latach 80. komputery stały się mniejsze, mądrzejsze, tańsze, a ludzie chcieli wszelkiego rodzaju osobliwości, aby żyć jeszcze lepiej, żyć jeszcze przyjemniej.

Zmienna to sposób na przechowywanie liczby, łańcucha lub wartości logicznej w programie. W prawie wszystkich językach programowania zmienne są najważniejszą częścią języka programowania, tylko te „symbole zastępcze”, które można zastąpić daną wartością, mogą tworzyć interaktywne programy.

Co to jest język programowania

Warunek jest żądaniem, jeśli zostanie zastosowany, to zostanie wykonane to, co jest w warunku. Istnieją operatorzy tworzący warunek. Operatorami będą: równe, nierówne, większe, mniejsze, prawda i fałsz. Pętla zawiera kod, który jest wykonywany, dopóki warunek należący do pętli jest spełniony. Na przykład dziesięć razy ma tę zaletę, że programista nie musi pisać kodu dziesięć razy.

Języki rodem z lat 80.

Jedną z pierwszych osobliwości był język C++. Język C ma ogromną ilość niedociągnięć (cóż, jest po prostu naprawdę ogromny) - można w nim zrobić wszystko, w tym strzelić sobie w nogę, strzelić sobie w nogę z fikcji, w drugą nogę, strzelić jedną nogą w drugiej nodze ogólnie - to chcesz zrobić. Ale jednocześnie niektóre rzeczy architektoniczne są tam robione dość trudne - znowu, jak w Assemblerze, musimy śledzić, gdzie jesteśmy, co i jaką pamięć przydzieliliśmy; jest tam cały czas ta pamięć gdzieś "płynie" - to znaczy wybraliśmy, zapomnieliśmy usunąć, usunęliśmy niewłaściwą rzecz, wyszliśmy z pamięci, ogólnie - mamy sporo problemów.

C++ został pierwotnie stworzony jako zestaw dodatków do języka C, które ułatwiłyby rozwój. W tym czasie modne stało się programowanie obiektowe i ludzie uznali, że wszystko można opisać w formie hierarchii, czyli masz piłkę (abstrakcyjną), dziedziczysz po niej piłkę nożną, siatkówkę, inną piłkę abstrakcyjną. . Modne było wtedy, że „teraz wszystko piszemy w formie jakiejś hierarchii i wszystko będzie dobrze, życie się poprawi, wszystko będzie dobrze i wszystko”. W pewnym sensie C++ zaimplementował to podejście obiektowe - nie był to pierwszy obiektowy język programowania, ale stał się dość popularny i zaczęły pojawiać się w nim wszelkiego rodzaju funkcje. Jednocześnie C++ zachował niemal całkowitą zgodność (w tamtym czasie) z językiem C, program napisany w C został z powodzeniem skompilowany jako C++ w 99% przypadków, a nawet działał w ten sam sposób. Miało to na celu ułatwienie migracji z C do C++.

Funkcja to zbiór kodu, który można wywołać w dowolnym momencie. Na przykład, jeśli kod jest zapisany do funkcji, kod nie powinien być pisany tak często i można go wywołać za pomocą odpowiedniej nazwy funkcji. Możesz także wywoływać funkcje z parametrami. Ta liczba może być używana przez funkcję jako zmienna. Na przykład możesz użyć tej samej funkcji do obliczenia wielu faktur, które mają tę samą formułę.

Jeśli chcesz zobaczyć kod źródłowy mojej jeszcze nieukończonej gry. Do strony z wersją aktualnej gry. Na tej stronie konieczne było zaprogramowanie i wyeksponowanie atrakcyjnego wyglądu oraz licznych funkcji serwisu w sposób optymalny i satysfakcjonujący dla mojej mamy.

Oprócz podejścia obiektowego (w C++), szybko pojawiła się Standardowa Biblioteka Szablonów (STL). Myślę, że w szkole ci, którzy jeszcze uczyli Pascala, odkryli, że po pierwsze nie miałeś tam wbudowanego sortowania (w starożytnym, niebieskim Borland Pascal, teraz jest już we współczesnych wersjach) – jest przykład (źródło) sortuj, możesz go skopiować i wkleić. Ale jeśli chcesz tutaj posortować liczby całkowite, tutaj chcesz liczby rzeczywiste, a tutaj są łańcuchy, które można ze sobą porównywać, musiałeś napisać trzy różne rodzaje, które robią absolutnie to samo, po prostu mają różne rodzaje dane. Nie jest to zbyt dobre, a szablony, które nie pojawiły się od razu w C++ znacznie ułatwiły ten problem. Oznacza to, że masz abstrakcyjny program, który pomyślnie posortował coś, co można ze sobą porównać.

Języki skryptowe z lat 90.

Ale czas nie zatrzymał się, w latach 80-tych wydarzyło się wiele ciekawych rzeczy. Ale gdzieś na przełomie lat 80. i 90. komputery stały się tak dobre, że już można było robić bardzo dziwne i bardzo nieefektywne rzeczy. W szczególności były to języki skryptowe, które nie były kompilowane w kod maszynowy, ale interpretowane. BASIC też był przez pewien czas interpretowany, ale te języki skryptowe były przeznaczone głównie do przetwarzania tekstu - np. Perl, Python (nie był wtedy zbyt znany), PHP, Ruby - to są języki skryptowe, które są w jeden lub w różnym stopniu żyją jeszcze (wszyscy zdążyli się pojawić przed 2000 r., a nawet znacznie wcześniej).

Omówmy je trochę, bo to są konkretne rzeczy i teraz są używane w wielu miejscach. Jaki jest pomysł? Jeśli nie kompilujemy, można pozwolić na znacznie więcej. Na przykład program może spojrzeć na swój kod i jakoś go wykorzystać; wie, co się w niej dzieje i dzięki temu może robić wiele ciekawych rzeczy.

Perl został zaprojektowany do przetwarzania tekstu - w tamtych czasach w komputerach było już tyle pamięci, że można było wepchnąć do niego jakiś tekst i zrobić z nim coś pożytecznego (na przykład policzyć słowa, wyszukać jakiś rodzaj). Ale moim zdaniem został zaprojektowany przez ludzi, którzy trochę oszaleli, bo jest o nim taki żart: „Każdy zestaw znaków napisany to poprawny program w Pearl”. Moim zdaniem można na nim tylko pisać, nie można czytać. Kiedy patrzę na kod w Perlu i próbuję coś rozgryźć, nic nie rozumiem. Może gdybym go lepiej znała, to bym coś zrozumiała, ale jak słyszałem od tych ludzi, którzy jeszcze umieją, mówią, że łatwiej jest przepisać. Oznacza to, że programy są krótkie i naprawdę łatwiej je przepisać niż dowiedzieć się, co tam jest i naprawić.

Mniej więcej w tym czasie, w połowie lat 90., pojawił się Internet. Na początku była to poczta, strony ze statycznym HTML, ale ludzie chcieli dodać tam jakąś dynamikę, żeby wszystko działo się dla nas dynamicznie, można było wypełnić jakieś formularze, zrobić księgi gości i coś jeszcze. W związku z tym wymagało to pewnego rodzaju interakcji, wymyślili protokół, w jaki sposób współdziała, a co najważniejsze, wygenerowanie tych statycznych (warunkowo) stron, które zostaną „wyplute” użytkownikowi w odpowiedzi na jego żądanie.

Ogólnie rzecz biorąc, w tamtych czasach nic poza Pearl nie było odpowiednie. Złym pomysłem było napisanie handlera w czystym C lub C++. A z braku lepszego języka w tamtym czasie (i wystarczająco długo), Pearl był popularnym językiem do tworzenia stron internetowych. Oczywiście skala nie jest porównywalna z tym, co dzieje się teraz.

PHP powstał jako… przez przypadek. Jedna osoba szybko przestała to robić - zrobił jakąś własną stronę, miał jakąś księgę gości, coś jeszcze, jakieś rzeczy. Napisał też zestaw makr dla Pearl, które wyglądały jak C, ponieważ wiedział, jak używać C, tylko dlatego, że był taki wygodny. I nazwałem to Osobista Strona Główna. Udostępnił i powiedział: „Ludzie, spójrzcie, jaki utwór napisałem, tutaj wszystko jest znacznie jaśniejsze niż na Pearl i możesz go edytować”. A ludziom się to podobało.

Potem upuścił walizkę. Ogólnie rzecz biorąc, ten PHP zaczął żyć i z czasem stał się znacznie bardziej popularny niż Perl. Ale ta jego „trauma narodzin” (pomysł jest jak zestaw makr dla Pearl) odegrała z nim dość okrutny żart. Język okazał się dziwny. Oznacza to, że rozwijał się sam, nikt go nie projektował, nikt nie zarządzał procesem rozwoju (ani firma, ani żadna osoba), ale było wiele grup, z których każda widziała to, co jej się podobało. W rezultacie funkcje są tam nazywane inaczej, nie ma nawet stylu, wszystko odbywa się przez podkreślenia, ogólnie ustawienia są tu i tam, a jak to wszystko będzie działać, nie jest jasne. Ale możesz usiąść i pisać w PHP w dwie godziny, bo tak to sobie zaplanował.

Python i Ruby: Ruby jest teraz mniej popularny, Python jest jakoś lepiej „wycięty”, porozmawiajmy o tym później. Wyraźnie widać, że w tamtych czasach były to (wykładowca wskazuje na Perl, Python, Ruby, PHP) języki wysokospecjalistyczne do wysokospecjalistycznych celów. W ogóle nie było wówczas programowania systemowego, nie było w nich napisanej logiki biznesowej, a teraz niewiele z tego robi.

Skompilowane języki z lat 90.

Pójdziemy mniej więcej w tym samym czasie, ale w innym kierunku. W tamtym czasie używaliśmy C++ do prawie wszystkiego, co trzeba było napisać nie do sieci, nie do przetwarzania tekstu, ale do prostych aplikacji, systemów operacyjnych, zabawek - w ogóle do czegokolwiek. Ale C++ to w rzeczywistości przerażający język. Czemu? Ponieważ po pierwsze odziedziczył z powodu Kompatybilność wsteczna wszystkie problemy C. Nadal może zostać zabity przez milion różne sposoby, te same, które były w C (oczywiście dodano nowe sposoby w C++). Jednocześnie, jeśli napiszesz wszystko dobrze i poprawnie, jak wymyślili autorzy C++, to oczywiście nie można było zabić się starymi metodami i wydaje się, że było ich mniej. Miał jednak bardzo dziwny, osobliwy model obiektu. Podział programu na moduły, na jakieś kawałki pochodził z C (jeśli można napisać include w C lub C++ - w rzeczywistości zostało to pomyślane jako po prostu wstawienie tekstu biblioteki do twojego programu, w końcu, kiedy piszesz garść wtrąceń, masz wszystko - jak jest "prymitywne", jak to było na samym początku - wszystko wstawiasz do jednego pliku, a potem kompilacja strasznie długo trwa, bo kręci się kilka razy , wersje są jeszcze lepsze.

Ogólnie C++ ma wiele wad. Kwalifikacje programisty musiały być wysokie, żeby pisać w C++, a tacy programiści byli drodzy (zarówno szkolenia, jak i coś jeszcze, czyli trudno znaleźć programistów na rynku, muszą dużo zapłacić, no generalnie tak nie jest... ). A nasze komputery liczą coraz szybciej, tanieją, ludzie kupują sobie nowe komputery i chcą więcej aplikacji, więcej zabawek do telefonu, w ogóle więcej radości.

Tak pojawiła się Java (Java). Tam też wiąże się dość zabawna historia, jak nazwa pojawiła się w tym języku. Są programiści, cały czas piją kawę i wtedy modne było picie kawy, która wyrosła na wyspie Jawa. Język został pomyślany jako język urządzeń do zabudowy, w szczególności ekspresu do kawy. Tak powstała nazwa...
Co się od niej zaczęło, co było w niej dobrego i dlaczego zdobyła tak dużą popularność? Po pierwsze, całkowicie pozbyli się spuścizny Sishny. Żadnych wskazówek, znacznie mniej sposobów na odstrzelenie dowolnej części ciała i zniszczenie wszystkiego. Po drugie, wprowadzili znacznie nowsze pomysły w zakresie modelu obiektowego - to znaczy, że C++ pojawił się znacznie wcześniej niż Java i używał bardziej archaicznego, "dzikiego" modelu obiektowego. Otóż ​​tutaj (wykładowca wskazuje na Javę) było już wtedy bardziej przemyślane i teoretycznie ludzie myśleli, aw praktyce wszystko stosowali i robili dużo fajniej.

I wreszcie trzeci. Nasze programy w Javie nie zostały złożone w kod maszynowy, ale w kod maszyny wirtualnej. Oznacza to, że masz maszynę wirtualną JVM (VM) — Javovsky. Twoje programy zostały zebrane w pewnego rodzaju prezentację pośrednią, a następnie, za pomocą tej maszyny, zostały już wykonane. Co to zrobiło? Po pierwsze zwalniał, a po drugie z straszliwą siłą zjadał pamięć, a po trzecie był przenośny wszędzie (teoretycznie) - nawet do ekspresu do kawy, nawet do młynka do kawy, nawet do komputera, nawet do telefonu komórkowego. Z jednej strony jest to dobre, to znaczy, że właśnie napisałeś implementację maszyny wirtualnej, a następnie uruchamiasz swoje programy Java wszędzie. Ale z drugiej strony szkoda, że ​​ten sam telefon miał wtedy mało pamięci, była niska wydajność, a to wszystko dodatkowo zaczęło się stępić i zwalniać.

Ale nawet to nie jest głównym powodem, dla którego język został wynaleziony w ogóle. Język Java został wymyślony w celu zmniejszenia wymagań dotyczących kwalifikacji programistów. Oznacza to, że ubożsi programiści mogą pisać dobre programy w Javie, ponieważ nie pozwala na pisanie złych programów - nie ma możliwości pisania złych programów. Możesz tam tylko pisać dobrze programy. Cóż, w rozumieniu twórców języka.

To znaczy, jeśli w C, w C++, w Pythonie, na czymkolwiek, możemy rozpuścić jakieś przerażające śmieci z naszego projektu, gdzie mamy wszystko pomieszane, zebrane godzinami i tam coś jeszcze. W Javie możesz również rozpuścić kosz na śmieci, ale do tego musisz już trochę wysiłku. Czyli domyślnie nie okazuje się to "śmietnikiem", pojawiają się inne problemy, że coś tam zostało odziedziczone lub odziedziczone - generalnie na jedną sensowną linię przypada dziesięć mało znaczących. Z drugiej strony, być może programista o średnich umiejętnościach potrafi napisać kod dość wysokiej jakości.
Jesteśmy prawie na końcu. U nas następną rzeczą, która się pojawiła jest .Net (osiągnie), no cóż, a w szczególności interesuje nas C# (prawie to samo [wykładowca wskazuje na Javę], czyli są różnice w szczegółach, jeśli wybierasz między nimi - zobacz, gdzie płacisz więcej pieniędzy).

I jeszcze jedna rzecz to JavaScript. Nie ma nic wspólnego z językiem Java, pojawił się w tym samym roku - słowo było modne, na licencji znak towarowy używać.

Na co przede wszystkim należy zwrócić uwagę? (Wykładowca rysuje strzałki z C++ do Java, .Net, C#, JavaScript i PHP). Aby napisać prosty program w jednym z tych języków, a także w wielu innych - jeśli znasz C++, to generalnie nie musisz nic więcej wiedzieć - bierzesz i piszesz w C++, a potem dokładasz na początek dolary , coś innego robi drobiazgi i zaczyna pracować dla Ciebie na czymkolwiek (wykładowca wskazuje na języki, do których zostały przypisane strzałki z C++). Oznacza to, że są bardzo podobne w niektórych prostych rzeczach. Jeśli rozwiązujesz jakieś szkolne problemy, zadania edukacyjne, coś innego (nie projektujesz dużego projektu - masz jeden plik, który odczytuje liczby, wyświetla liczby w konsoli, robi coś innego), to między tymi językami prawie nie ma różnicy. Jasne jest, że JavaScript i PHP są wyspecjalizowane, mają wszystko trochę inaczej. I tutaj (wykładowca wskazuje na Javę i C#) generalnie jest bardzo mała różnica.

Od tego czasu pojawiło się wiele innych ciekawych rzeczy, ale nie jest jasne, czy przeżyją, czy umrą pomyślnie. Czego teraz używają, do jakich zadań?

Wybór języka w zależności od zadania

Załóżmy, że stoisz przed zadaniem napisania sterownika karty graficznej. W jakim języku będziesz dzisiaj używać? (Krzyk z publiczności: Java!) Dlaczego... Java jest świetna, ale dlaczego nie Ruby czy PHP? (Wykładowca mówi sarkastycznie.)

Programowanie niskopoziomowe

Jeśli piszesz coś niskopoziomowego, to C jest najlepszym wyborem, ale faktycznie coś słyszałem (ale nie widziałem), że do tego służy C++. Ale prawie w to nie wierzę, bo w C możesz wyraźnie kontrolować - skoro dałeś tyle bajtów pamięci, to tak i tak będzie. A w C++ (STL), jak zaimplementowany jest ciąg znaków? Cóż, jakoś zaimplementowane. I w końcu nie wiemy jak i co się tam dzieje, może zabraknie nam pamięci na karcie graficznej lub stanie się coś innego. Dlatego C nadal żyje i nie umiera, takie zadania programowania systemu nadal istnieją - napisz system operacyjny, napisz sterowniki, napisz coś innego - C jest do tego świetne. Ponadto teraz są różnego rodzaju urządzenia (internet rzeczy obiecuje, że niedługo nadejdzie), które żyją na bateriach (i oczywiście będą ich miliony, wszystko będzie zawieszone w tym internecie rzeczy) , powinny być bardzo tanie i zużywać bardzo mało energii elektrycznej. W związku z tym będzie 2 kB pamięci, procesor 5 kHz, no oczywiście w co trochę wkręcać maszyna wirtualna lub język skryptowy nie będzie działał w najbliższej przyszłości, co oznacza, że ​​będziesz musiał napisać coś w C. I nawet teraz, na przykład, obliczenia na karcie graficznej (OpenCL lub jakaś inna technologia) - nie wymyślają nowego języka do pisania programów dla nich - robią tam C z dużymi ograniczeniami. Tylko dlatego, że ludzie już wiedzą jak, po co uczyć się czegoś nowego? Formalnie jest to prawdopodobnie również w pewnym sensie C.

Programowanie sieciowe

Powiedzmy, że chcesz napisać nowego Facebooka ( sieć społeczna). Na czym to napiszesz? (Od publiczności mówią o HTML i CSS.) HTML, CSS to projektowanie, a my chcemy móc tam dodawać zdjęcia, znajomych, zostawiać komentarze.

Jeśli chodzi o część skryptową - czyli to, co wydarzy się po stronie klienta - to JavaScript. A czasem JavaScript jest generowany w innym języku i wysyłany (zdarza się, że skrypt jest generowany… bo czasem łatwiej w ten sposób obsłużyć pewne zmiany w logice).

Co zaskakujące, jest napisany w PHP - i Facebooku oraz wielu innych dużych projektach. Oczywiście musiałem napisać kilka własnych rzeczy, aby nadal działały dobrze, a nie tak, jak zrobiono „tyap-blooper”, ale zrobili to. Zasadniczo nie ma znaczenia, w czym piszesz, ale nie polecam Perla. Tu i teraz oczywiście nikt nie pisze od podstaw do sieci. Każdy pisze jakieś ramy czy coś. Zakupy online? Pobraliśmy framework dla sklepu internetowego - cóż, to wszystko, napisaliśmy sklep internetowy.

Programowanie biznesowe

Następnie chcesz napisać nudną aplikację bankową. A może masz na przykład kogoś, kto sprzedaje karty sim? Być może kupiłeś kiedyś telefon lub coś innego i powiedzieli ci: „System się zawiesza, nic nie możemy zrobić”. Na czym napiszesz taki wniosek? (Płacz publiczności w sprawie Pythona) Nie możesz napisać czegoś takiego w Pythonie, co ty?! Nie warto pisać niczego dla biznesu w Pythonie. Czemu? Ponieważ kiedy piszesz coś w Pythonie, nie możesz znaleźć znacznej liczby błędów w procesie pisania. Python jest wpisywany dynamicznie w każdy możliwy sposób i generalnie można tam ukryć błąd, aby pojawił się w takiej sytuacji, że nawet nie możesz zrozumieć, co tam zrobili ci oszukańcy użytkownicy, że wszystko się dla ciebie zepsuło. Oznacza to, że lepiej pisać dla siebie małe skrypty w Pythonie - rozumiesz, co się tam dzieje i co się dzieje. Cóż, czy coś, czego nie szkoda wyrzucić: chcesz coś rozwinąć przed konkurencją, a co z tego, że będzie się psuć za każdym razem. Napisałeś w Pythonie i to wszystko - przejąłeś rynek. A jeśli piszesz coś od dłuższego czasu, na przykład jakąś aplikację bankową (aby zatwierdzała kredyty, coś innego) – piszesz to w Javie. Bo jest poważna sprawa, kartki, pieniądze, dokumenty, coś jeszcze, ale nie można w tym tak bardzo zepsuć, żeby wszystko się zepsuło, bo inaczej ludzie się obrażą - ich pieniądze odeszły i nigdzie nie dotarły, moment, w którym struna zamieniła się w liczbę lub odwrotnie. Czyli oznacza to, że metodycznie bierzesz Javę i piszesz, piszesz... No, czy on.Net, takie sytuacje w zasadzie też się zdarzają. Tam oczywiście również możesz napotkać problemy, ale prawdopodobieństwo tego jest nieco mniejsze.

Programowanie dla wojska, lotnictwa

A teraz wyobraź sobie, że postanowili wysłać cię na Księżyc rakietą. Czego wolałbyś użyć do napisania kodu sterującego silnikami rakietowymi? Zobaczmy. To chyba (wykładowca pokazuje w Perlu, Pythonie, PHP, Ruby) nie jest tego warte – spowalnia, dzieje się coś innego, no cóż generalnie nie zgodziłbym się latać na takiej rakiecie. W C++? Szczerze mówiąc, też bym mi nie ufał, ponieważ jest zbyt wiele sposobów na zabicie się w C++. Kiedy jesteś gdzieś w kosmosie, nie jest zbyt dobrze.

Może w Javie? Wygląda na to, że wszystko jest tam dość niezawodne, a architektura jest dobra, bez dzikich typów, bez nadmiaru pamięci. Powiedzmy, że nadszedł najważniejszy moment, a nasza Java postanowiła zbierać dla nas śmieci. Musimy wylądować, zwolnić, a ona na to: „Nie, śmieci lecą”. Ogólnie też niezbyt dobrze.

Szczerze mówiąc, wolałbym mieć ten program napisany w Pascalu. Ja oczywiście nie bardzo lubię Pascala, ale jakoś w takich sprawach byłoby bardzo fajnie.

Używanie kilku języków jednocześnie do tworzenia oprogramowania

Cóż, co należy ogólnie powiedzieć o językach nowożytnych. W dzisiejszych czasach wiele projektów nie żyje w jednym języku, to znaczy niektóre z nich żyją w jednym języku, niektóre w innym, a jeszcze inne w trzecim. Na przykład, jeśli masz jakąś aplikację internetową, która przetwarza ogromne ilości informacji, dostęp do dysków (nawet do baz danych, są one tak ogromne, że nawet baza danych nie obsługuje niektórych już napisanych) jest prawdopodobnie napisany w niektórych, a następnie niskich -poziom C, aby pisać szalenie szybko na dysk i tak dalej. Oczywiście pisanie całego projektu w C nie jest tego warte. Może istnieje jakaś pośrednia logika napisana w Javie, która wywołuje funkcje Cis do szybkich wywołań. No cóż, frontend (na co patrzy użytkownik) jest już oczywiście napisany w jakimś skrypcie, w czymś, co jest bezpośrednio wykonywane przez przeglądarkę (JavaScript). A wszystko to żyje razem i skutecznie współdziała.

Przy opracowywaniu niektórych aplikacji, nawet dużych, czasem ludzie robią co? Biorą i piszą prototyp w Pythonie (jak wszystko będzie działać), szkicują, zastanawiają się nad jakąś architekturą. Pisanie na nim jest naprawdę bardzo szybkie – wrzucili prototyp, poeksperymentowali z nim i powiedzieli: „Wo! To jest takie fajne! " I całkowicie przepisany. Wydawałoby się, że zrobili to dwa razy, zajęło to dwa razy dłużej (no, półtora). Ale nie! Często okazuje się, że ta metoda nie jest zła, bo jeśli od razu napiszesz w czymś np. w Javie, a potem zdecydujesz: „Nie, zrefaktoryzujmy, zmieńmy architekturę całkowicie i tak dalej” – to wydasz 10 razy więcej czasu... Takie rzeczy też istnieją i żyją.

Warunki sukcesu dowolnego języka programowania

Porozmawiajmy teraz o tym, dlaczego niektóre dobrze wyglądające języki nie przetrwały lub nie żyły na bardzo ograniczonej przestrzeni. Kiedy Wirth zobaczył, co złe firmy Apple, Borland i wszystko inne zrobiły z jego Pascalem, wymyślił jeszcze lepszy język - Oberon. Był po prostu szalenie minimalistyczny - to znaczy, że było bardzo mało poleceń (Stringi? Po co nam łańcuchy? Utworzymy tablicę znaków!). Cóż, coś mu nie działało, do tego stopnia, że ​​mogło.

Jeszcze jedna rzecz. O ich opracowanie poproszono również wojsko USA fajny język, na którym wszystko działa i wszystko można napisać. Rezultatem jest dość potworny język o nazwie Ada, w którym jednak wciąż coś piszą, ale znowu - tylko dla wojska.

Jaki jest problem? Dlaczego niektóre języki, takie jak Python, którego żadna firma na początku nie wspierała, przejęły rynek. PHP, który również jest kiepsko zaprojektowany, również sam przejął i opanował rynek (w większości). A zainwestowano przeróżne miliardy dolarów (wykładowca wskazuje na Adę) i nigdzie nie poszło, nic się nie stało. Jaki jest tego powód? Wynika to z braku infrastruktury wokół tych języków. Oznacza to, że język może być doskonały, ale tak długo, jak nie ma dokumentacji, o ile nie ma społeczności, która może odpowiadać na pytania (na Stack Overflow) i wreszcie, co najważniejsze, o ile nie ma dużej liczby bibliotek, język nie odpala. To znaczy, na przykład, chciałeś napisać stronę internetową o Oberonie. Dlaczego nie? I zaczyna się zamieszanie... Nie można podnosić serwera WWW na Oberonie, aby pokusić się o testowanie, nie można podłączyć żadnych bibliotek, ponieważ nie ma ich na Oberonie. A wszystko to odbywa się za pomocą jakichś kul, siły odchodzą i na ogół plujesz i piszesz swoją stronę w czystym C zamiast Oberon. A te języki, które potrafią korzystać z bibliotek z innych języków, żyją dobrze. Ten sam Python w tych miejscach, w których zwalnia. Cóż, ogólnie rzecz biorąc, wszelkiego rodzaju standardowe rzeczy, takie jak sortowanie i coś innego, są napisane w C, a on (Python) wie, jak z nimi współdziałać.

Java posiada również natywny interfejs Java. To jest w zasadzie C, czyli tam (moim zdaniem cały czas chcą banować, ale wygląda na to, że jeszcze nie zbanowali) te języki mogą wchodzić w interakcje z już istniejącymi bibliotekami (głównie Sishny). I dzięki temu biorą i pracują. Pomysł, który próbuję ci przekazać, jest jasny, prawda? Nie pisz w językach, które nie wiedzą, jak podłączyć bibliotekę C. Cóż, jeśli chcesz nacieszyć się czymś fajnym. No i stopniowo one (języki) zarastają własną infrastrukturą. I jakoś dobrze żyją.

Język programowania i doradztwo zawodowe

Porozmawiajmy teraz o tym, jak zrozumieć, czego chcesz w życiu. Jakie są fajne rzeczy? Możesz zrobić jakiś rodzaj programowania systemów, prawda? Fajnie jest tam policzyć te rowery, chcesz wystrzelić quadkoptery, trochę kamer i coś jeszcze do zrobienia. Wtedy C jest prawdopodobnie twoim wyborem.

Jeśli chcesz pisać, może nie najciekawsze aplikacje w życiu, ale fajnie jest je zaprojektować, pomyśl o tym wszystkim i zarabiaj dużo pieniędzy na siedzenie i nudę przez większość czasu (musisz za to zapłacić, jeśli jesteś wysokiej jakości miss), oto one - Java, .Net. Idziesz do pracy w banku, piszesz, idziesz do pracy o dziewiątej w białej koszuli, dostajesz dobrą pensję i piszesz zgodnie z zaleceniami najlepszych źródeł Java, .Net-owiec i tak dalej...

Jeśli chcesz napisać jakieś aplikacje, jakąś przeglądarkę, jakieś zabawki, coś innego, to C++ jest świetny. Jeśli chcesz pisać strony internetowe, oto one, wybrane przez Ciebie języki (wykładowca pokazuje w Perlu, Pythonie, PHP, Ruby), nie ma dużej różnicy. Jedyną rzeczą jest to, że PHP umrze przed Pythonem, więc jeśli jesteś leniwy w nauce nowych rzeczy, naucz się Pythona. Nie zauważysz dużej różnicy, ale wytrzymasz dłużej.

Co się dzieje z Rubym również nie jest jasne. Cóż, możesz również PHP, jeśli już się go nauczyłeś, ponieważ są one tak proste, że nie zajmuje to dużo czasu, aby się tam ponownie nauczyć.

I wreszcie jest jeszcze jeden obszar zastosowania języków programowania – to wtedy, gdy używa ich nie-programista. Załóżmy, że jesteś matematykiem, fizykiem, chemikiem, analitykiem, kimkolwiek i musisz szybko coś obliczyć, przeanalizować niektóre dane (dla biologów, na przykład, ile lisów polarnych żyje na Wyspach Komandorów). Możesz to wszystko umieścić w tabeli w programie Excel lub coś przeanalizować. Python również dobrze się do tego nadaje, wie, jak pracować z tekstem, a biblioteki są pełne wszelkiego rodzaju, statystycznych i tak dalej. Jeśli chcesz zrobić coś w rodzaju uczenia maszynowego, przetworzyć jakieś dane, przewidzieć, to teraz robi się to najszybciej w Pythonie. Należy jednak zauważyć, że zadania są bardzo różne. Na przykład, jeśli chcesz handlować na giełdzie natychmiast w warunkach, gdy notowania cały czas się zmieniają, to bez względu na to, jak fajnie piszesz Machine Learning w Pythonie, osoby, które mają to napisane w czymś szybciej, będą miały czas, aby wszystko kupić wcześniej, podczas gdy będziesz liczony, nawet jeśli ich algorytmy są gorsze. Dlatego nawet te zadania uczenia maszynowego (niektóre z nich) wymagają wysokiej wydajności (i ekstremalnie wysokich) i odpowiednio innych języków.

Jedynym sposobem, aby dowiedzieć się, czego chcesz, jest wypróbowanie wszystkiego. Teraz powiem to jako jedną z wizji tego, jak można spróbować wszystkiego. Jak zostać programistą i to szczęśliwym? Więc. Zaczynamy od zera. Tutaj uczysz się w szkole matematyki, języka rosyjskiego i innych przedmiotów obowiązkowych i fakultatywnych, a Twoja wiedza z zakresu programowania jest odzwierciedlona na tablicy (wykładowca wskazuje pustą tablicę) na ten moment... A chcesz stać się szczęśliwą osobą, robić to, co kochasz, zarabiać dużo pieniędzy i niczego sobie nie odmawiać i być szczęśliwym.

Jeden sposób, aby to zrobić. Są oczywiście wszelkiego rodzaju inspirujące historie o ludziach, którzy w ogóle nie studiowali, albo odeszli i zostali miliarderami, właścicielami firm i tak dalej. Należy jednak zauważyć, że większość ludzi, którzy być może nie zostali miliarderami, ale też żyją dobrze, w pewnym momencie nadal ukończyła uniwersytet.

Jaka jest nasza sytuacja z przyjęciem na studia (teraz studiujesz w szkole)? Kiedy jesteś w szkole, musisz zrozumieć, że następnym krokiem jest zapisanie się i zadbanie o to. Zdaj egzamin lub wygraj olimpiadę. Na egzaminie można używać Pascala, C++ (w tym czystego C), Pythona (nie będę o nich dalej wspominał). Na Olimpiadzie - ten sam Pascal, ten sam C++, ten sam Python (o jego problemach porozmawiamy teraz) i najczęściej jest Java. W zależności od Olimpiady wszystko może się wydarzyć, ale nie istota.

Jak wygląda wykres rozkładu języków na Ogólnorosyjskiej Olimpiadzie Informatycznej? Ludzie, którzy biorą udział w Wszechrosyjskiej, najfajniejszej olimpiadzie, o czym piszą? Wygląda to tak (tu oznacza Pascala, a tu około 2000, a tu około zera, tu C++, a tu 2015).

W 2000 roku prawie nikt nie pisał w C++. Piętnaście lat później prawie nikt nie pisze w Pascalu, mimo że Pascal jest nowoczesny. To język, który potrafi zrobić prawie wszystko tak samo. Tyle, że wszyscy stali się zbyt leniwi, żeby się tego nauczyć, każdy nowy trend i wszyscy dalej piszą w Borland Pascal, co oczywiście nie może nic zrobić. W C++ ludzie piszą algorytmy sortujące (STL) - super, napisali sort() i tyle. Na Pascalu, na zwykłym, na starym - to jest problem. Napisali jakiś zestaw (potrzebny) - super, napisali to w C++, w Pascalu znowu udręka ciągła. Na nowych Pascalach oczywiście możesz to zrobić, ale w rzeczywistości kosztują. Być może tego nie zauważyłeś, ale tak jest.

Jest też Java, ale Java ma wiele liter. To jest dla dużych projektów, ale dla małych programów jednorazowych okazuje się to dość kiepskie, bo jest ich dużo dodatkowe litery... Ale też niektórzy ludzie piszą, można nauczyć się na tym pisać. Ale na egzaminie Unified State tak nie jest, a egzamin Unified State nadal będzie musiał zostać zdany w większości.

Co jest najlepsze na egzamin? Do egzaminu najlepiej (jeśli nic nie wiesz i niczego Cię nie nauczą w szkole) nauczyć się Pythona. Niektóre zadania egzaminu są na nim doskonale rozwiązane. Na Olimpiadzie w ogóle okazuje się, że C++ jest (używany), ponieważ Python jest bardzo wolny, nie wszystko jest tam rozwiązane.

W ten sposób uczyłeś się jakiegoś małego podzbioru języka i niektórych algorytmów (prawdopodobnie) i rozwiązałeś wiele problemów, aby uzyskać dyplom olimpiady i iść na uniwersytet, aby zdobyć wyższe wykształcenie.

Teraz opowiem Ci o tym, jak my w HSE budujemy kurs, w jakiej kolejności są języki, jak są nauczane w matematyce stosowanej i informatyce na Wydziale Nauk Stosowanych, który robimy z Yandexem. W pierwszym semestrze - Python (nie do końca, o tym, jak należy się uczyć w szkole) i C++ (szerszy, znacznie szerszy niż zwykle naucza się w szkołach). Powiem ci od razu, żebyś się nie przestraszył, jeśli nagle zechcesz wejść, powiedz: „Dlaczego, już to wszystko wiem, dlaczego jadę gdzieś studiować? Wolałbym iść gdzie indziej ”. Dla tych, którzy już wiedzą, jak dobrze programować, istnieje możliwość przejścia bezpośrednio do nauki algorytmów i na dość teoretycznym szkoleniu. Nie patrzymy na nie teraz, to (wskazuje na tablicę) jest dla tych, którzy programują medium lub wcale.

W pierwszym semestrze uczą się podstaw Pythona tylko po to, by ludzie nauczyli się programować i żeby nikt się szczególnie nie obraził. Python jest rzadko nauczany w szkołach, najczęściej ludzie przychodzą ze znajomością Pascala lub C++. W zasadzie nawet Pascal, jeśli jest to szkoła masowa. No cóż, żeby nikt się nie obraził, wszyscy uczą się nowego języka (tak jakby byli na równych warunkach). A C++ po prostu dlatego, że możesz przejść gdziekolwiek z C++.

Potem przychodzi kurs „Algorytmy” i osobny projekt kursu... Klasyczne algorytmy z implementacją. Nie żeby teoretycznie coś wzięliśmy, obliczyliśmy złożoność. Na wykładzie wzięliśmy to, obliczyliśmy złożoność, na seminarium - wzięliśmy, zaimplementowaliśmy algorytm. Projekt polega na tym, że uczniowie robią coś skończonego. Na przykład jeden z projektów brzmiał: liczyć ... Powiedzmy, że masz dużo mieszkań w Moskwie i rozumiesz: „Och, mam dużo niepotrzebnych rzeczy, trochę wynajmę. I ustalają cenę, a nikt nie chce wynająć od ciebie mieszkania - prawdopodobnie za drogie. Albo wystawili jakąś cenę, natychmiast ją zdjęli, a ty myślisz: „Och, prawdopodobnie tanio ją zemdlałem” i ty też się denerwujesz. Oznacza to, że trzeba było obliczyć, ile kosztuje wynajęcie mieszkania? Jeździsz w danych - buduje dla Ciebie oszacowanie. Taka strona, na którą składało się kilka rzeczy: przyjmowanie sugestii, analizowanie, stosowanie jakiegoś algorytmu uczenia maszynowego (prawdopodobnie) bezpretensjonalne i tworzenie pięknej internetowej twarzy, w której można coś wybrać, wjechać, kilka metrów, dowolną liczbę pokoi , ilość saun, ilość jacuzzi w Twoim mieszkaniu i z grubsza oszacuj koszt. Czyli jakiś skończony, niezbyt trudna rzecz... Tutaj oznacza to (prowadzący wskazuje na kurs z algorytmów) taki energiczny C++, z konsolowym I/O. Otóż ​​tutaj (prowadzący wskazuje na napis „projekt”) jest coś pod okiem mentora, może z bazami danych, może z parsowaniem tekstów i czymś jeszcze.
Potem przychodzi trzeci semestr - kurs "Systemy komputerowe". Jest trochę assemblera do zrozumienia (bardzo mało), a potem coś podobnego do czystego C i interakcji z systemami operacyjnymi, w istocie programowania systemowego. A projekt na seminarium to także coś na temat wszelkiego rodzaju interakcji sieciowych, dość niskiego poziomu: opracuj jakieś narzędzie, na przykład rsync (synchronizacja, być może wiesz. W czystym C mniej więcej napisz odpowiednik rsync, który będziesz miał w sieci, synchronizuj foldery ze wszystkimi dostępami do plików i tak dalej).

I wreszcie czwarta. Nawet nie wiem, jak to nazwać, to taki vinaigrette technologii niezbędnych do realnego rozwoju, na przykład do tworzenia stron internetowych. Oznacza to, że jest to praktyczne zastosowanie baz danych, znowu coś podobnego do tego, co zostało zrobione w projekcie (wykładowca wskazuje na projekt na II rok), ale bardziej dogłębne. Oznacza to, że takie mniej lub bardziej konkretne rzeczy to już praktyczne programowanie. Równolegle istnieje jakakolwiek teoria, no cóż, tutaj zajmują się również nauką.

A po dwóch kursach ludzie rozchodzą się, żeby robić to, co ich interesuje, bo ta rzecz obejmuje dość szeroko takie podstawy programowania i ludzie już w tym momencie rozumieją, że w żadnym wypadku nie chcą zajmować się systemami komputerowymi (na przykład zrobili nie jak programowanie systemowe ), ale chcą zajmować się pewnymi algorytmami teoretycznymi, trudnościami w obliczeniach, wymyślaniem nowych rzeczy, rozproszonych lub czymś innym. Albo wręcz przeciwnie, myślą, że nie mają tu zbyt wiele ( wykładowca wskazuje na pierwszą linię kursu w Pythonie i C++) więc idź ( wykładowca wskazuje trzecią linię kursu, z programowaniem systemowym) - jak nie lubisz, licz bajty i ustawiaj wszelkiego rodzaju ograniczenia odczytu-zapisu, rób strumienie, wątki i coś jeszcze. I zgodnie z tym ludzie wybierają jakiś kierunek i uczą się. To znaczy w zasadzie, abyś nie rozwinął „syndromu kaczątka” - najpierw zobaczyłeś swojego Pascala, a teraz powiedziałeś „Pascal to potęga”; lub bardziej zaawansowany - widziałeś C++ i zacząłeś mówić o wszystkich, że C++ jest potężny, a wszystko inne nie jest zbyt dobre.

Tutaj trzeba na to spojrzeć (prowadzący wskazuje na spis kursów na tablicy) szerzej – to jedna z metod, która została wybrana, w szczególności w HSE (niedawno się pojawiła, więc jest dość nowoczesna). Są inne sposoby na poznanie się. Na innych dobrych uczelniach w nieco innej kolejności i inne akcenty są umieszczane. Ale starają się też zapoznać ludzi ze wszystkim, co mają.

Jak programista szuka pracy

Jesteś tym ( wykładowca wskazuje listę kursów) zrobiłem wszystko, studiowałem na uniwersytecie, studiowałem coś bardziej produktywnie przez kolejne dwa lata i trzeba iść do pracy. Jak wybrać coś do pracy? Najpierw wszystko poznałeś, zaszedłeś gdzieś głęboko i już wiesz, co kochasz. Musisz wybrać to, co kochasz naturalnie. Bo jeśli kochasz, zainwestujesz energię, będziesz miał motywację i ogólnie wszystko będzie dobrze. Bo nie chodzi tylko o pieniądze, ale o to, żeby było dla Ciebie interesujące i przyjemne. Cóż, a chcesz dostać się do fajnej firmy, znajdź pracę. Jaką osobę osobiście chciałbym zobaczyć? Na przykład przychodzi do mnie stu studentów – muszę wziąć dwóch lub jednego do pracy. Dlaczego przychodzą, wcale nie rozumiem, kim są, czym są, jak się mają? W najlepszym wypadku pokażą mi dyplom, który otrzymali na uniwersytecie, a ja powiem: „Wo! To fajny dyplom, ale nie jest taki fajny!” A tak przy okazji, mogę się mylić. Może osoba ta miała dużo wolnego czasu i dużo lepiej się nauczyła.

Co byłoby świetne? Najpierw jakiś projekt open source, który napisałeś od początku do końca. Pożądane jest, jeśli robię jakąś infrastrukturę, aby dane można było szybko odczytać, lub coś innego, to oczywiście byłbym zainteresowany, aby napisano do mnie coś open source. Nie zrobiona strona internetowa, ale coś na ten temat. Dlaczego mnie to interesuje? Widzę Twój kod, widzę jak często popełniałeś błędy, widzę jak reagowałeś na błędy od użytkowników, błędy od programistów, którzy go używają - wszystko jest spisane, patrzę na wszystko i myślę: „Wow, ten błąd nie było tu od dwóch lat zamknięto, tutaj niegrzecznie odpowiedziałeś użytkownikowi, to nie biorę nic innego ”. To jest twój osobisty projekt.

A co jeszcze byłoby fajne? Chciałbym zobaczyć, jak wykonałeś pracę zespołową. To znaczy, przychodzisz do mnie na rozmowę kwalifikacyjną i mówisz: „Chłopaki z uniwersytetu i ja złożyliśmy dobrą aplikację. Zrobiłem tam bazę danych, oni coś zrobili mobilna aplikacja, a także pracował tam dla nas facet, dziewczyna-projektant, chłopak z pomocy technicznej. Było nas pięciu i zrobiliśmy świetny projekt.” Cóż, widzę jaki jest twój projekt, mówię: „Jaki jest twój?” Ponownie patrzę na kod i rozumiem, że wiesz, jak pracować w zespole z ludźmi.

Programista to nie ten, kto siedzi sam (taki indie) w garażu, gdzieś przy zgaszonych światłach, z nikim nie rozmawia, zapuszcza brodę i pisze. Niemniej jednak istnieje pewien rodzaj interakcji z ludźmi. Na przykład z szefem, który czasami może cię przeklinać (szefowie, oni są tacy, nie zawsze mili). Widzę, że umiesz pracować z ludźmi i cieszę się, że masz jakiś dobry zespół. Nawet jeśli nie jest dobry, to lepsze, niż go nie mieć.

Co jeszcze chciałbym osobiście? Jeśli pokazałeś się w dużych projektach. Na przykład zadeklarowaliśmy coś w jądrze Linuksa, jeśli programujesz system, naprawiliśmy jakiś błąd. Oznacza to, że pokazali, że można odczytać czyjś kod i wprowadzić w nim pewne zmiany. Patrzę: „Och, rzeczywiście, wymyśliłeś coś skomplikowanego i naprawiłeś kilka błędów!” I zaczynam się z tego bardzo cieszyć. Bo ja… no nie wiem… mój programista zrezygnował, bo konkurencja zaoferowała mu wyższą pensję, a ja pilnie muszę kogoś uciszyć – ciebie. Wygląda na to, że pisałeś tylko od zera, ale nie wiesz, jak czytać i edytować czyjś kod, a ja się denerwuję.

I wreszcie, w zależności od konkretnego stanowiska, jest wiele innych rzeczy. Jeśli jesteś analitykiem pracy, chciałbym abyś rozwiązał zadania analizy danych na Kaggle. Jeśli dostaniesz pracę przy jakichś algorytmicznych rzeczach, chciałbym, żebyś zrobił kilka algorytmów w programowaniu sportowym. I na koniec, jeśli pomyślałeś o zawodzie, przeczytałeś, jak odbywają się rozmowy kwalifikacyjne, spotkałeś się, że niektórzy ludzie wyrażają duże niezadowolenie: „Przyjechałem i pytają mnie, jakie jest moje hobby. Siedzę jak sowa i nie odpowiadam, bo nie mam hobby ”- i myślą, że HR to robią. W rzeczywistości próbują dowiedzieć się, jak bardzo jesteś przyjazny i odpowiedni. Jeśli jesteś nieprzyjazny i nieadekwatny, to bez względu na to, jak jesteś geniuszem i pracoholikiem, twardym specjalistą z dużą wiedzą, zespołowi trudno będzie z Tobą współpracować, a sam nie zrealizujesz projektu. Ponadto nawet jeśli się rozciągasz, możesz sobie wyobrazić, co za obciążenie dla firmy. I że przyjdziesz jutro i powiesz: „Podnieś moją pensję 10 razy, inaczej cię zostawię”. Zrozumiałe jest, że firmy nie chcą wchodzić w taką sytuację. Dlatego wychowanie w sobie adekwatności i dobrej woli jest tak samo ważne (przynajmniej) jak rozwijanie pewnego rodzaju umiejętności zawodowych.

Podsumowując, co możesz powiedzieć? Które języki są dobre, a które złe? Cóż, w ramach grupy języków, na przykład między Ruby, Python i PHP, który wybrać? Oczywiście poprawną odpowiedzią jest Python, ale tak naprawdę różnica między nimi polega na liczbie dozwolonych błędów, w ilości czegoś innego - 5%, no może 10%. Oznacza to, że jeśli masz już gotowy projekt napisany w PHP, nikt przy zdrowych zmysłach nie powie: „Przepiszmy wszystko w Pythonie”. Powiedzą: „Zatrudnijmy więcej programistów PHP i kontynuujmy pisanie w PHP”. Świetnie, to nie jest zły wybór. Oczywiste jest, że jeśli nagle zaczniesz pisać projekt, rozsądnym rozwiązaniem może być teraz wybranie Pythona. Chociaż to też zależy. Może masz na rynku bandę tanich programistów PHP, ale Python jest drogi i myślisz: „Tak, technologia jest fajniejsza, ale zaoszczędzę na gotowych programistach”. I to wszystko, świetnie, już przyjeżdżasz i tam pracujesz.
Jak wybrać między Javą a C++? Tak, dzieje się to samo. Myślę, że zanim zdecydujesz, w jakim języku rozpocząć nowy duży projekt, zdobędziesz wiedzę w swojej dziedzinie zawodowej i będziesz umiał to zrobić właściwy wybór... W tej chwili nie musisz jeszcze dokonywać takiego wyboru, więc radzę robić to, co lubisz.

Podstawy, jak już powiedziałem, samych podstaw programowania (czym jest funkcja, czym są if's, for's, tablice, coś innego) można się nauczyć mniej więcej w dowolnym języku. Np. w C++, bo wygląda na to dużo rzeczy, a konkretów w nim (na tym poziomie) jest najmniej, a literek jest najmniej niepotrzebnych do pisania. Cóż, kiedy nauczysz się skomplikowanych rzeczy architektonicznych, ucz się i za bardzo się tym martw. Czyli najważniejsze jest - spróbuj, poszukaj tego, co lubisz, a gdy zdasz sobie sprawę, że jest już 4 rano, a ty siedzisz i piszesz dla zabawy, bo ci się to podoba, to chyba o tym moment, w którym znalazłeś swój ...

Programowanie dla początkujących

Na początek chciałbym powiedzieć, że każdy może obsługiwać komputer i tworzyć programy. Do tworzenia programy komputerowe nie musisz mieć niesamowitej inteligencji ani dyplomu z matematyki. Potrzebujesz tylko chęci wymyślenia czegoś i cierpliwości, aby nie rezygnować z zajęć.

Umiejętność pisania programów to taka sama umiejętność, jak umiejętność pływania, tańca czy żonglowania. Niektórym ludziom udaje się to zrobić znacznie lepiej niż innym, ale każdy może osiągnąć pewne rezultaty przy odpowiedniej praktyce. Z tego powodu dzieci nabierają biegłości w programowaniu w młodym wieku. Dzieci niekoniecznie są genialne; są po prostu skłonni do uczenia się nowych rzeczy i nie boją się popełniać błędów.

Pomimo tego, że komputery wydają się bardzo skomplikowanymi elektronicznymi potworami, zrelaksuj się. Niewiele osób dokładnie wie, jak działają wyszukiwarki, które pozwalają szybko znaleźć potrzebne informacje w Internecie, a niektórzy nie zorientowali się, jak prowadzić samochód. Podobnie prawie każdy może nauczyć się tworzyć programy bez wnikania w szczegóły działania komputera.

Ogólnie rzecz biorąc, program podpowiada komputerowi, jak rozwiązać konkretny problem. Ponieważ świat jest pełen problemów, liczba programów, które ludzie mogą napisać, jest nieskończona.

Jednak, aby powiedzieć komputerowi, jak rozwiązać jeden wielki problem, zwykle trzeba powiedzieć komputerowi, jak rozwiązać całą serię małych problemów, które składają się na duży problem.

W rzeczywistości programowanie wcale nie jest trudne i nie jest czymś tajemniczym ani nadprzyrodzonym. Jeśli potrafisz pisać instrukcje krok po kroku który pozwoli znaleźć Twój dom, możesz też napisać program komputerowy.

Najtrudniejszą częścią programowania jest identyfikacja małych problemów, które składają się na problem, który musisz rozwiązać. Ponieważ komputery są absolutnie głupie, musisz im powiedzieć, jak wykonać dowolną akcję.

Jeśli uważasz, że tworzenie programu jest fajniejsze niż korzystanie z niego, masz wszystko, czego potrzebujesz do tworzenia programów komputerowych. Jeśli chcesz nauczyć się pisać programy komputerowe, potrzebujesz następujących trzech cech.

Pościg. Jeśli bardzo chcesz czegoś, na pewno to dostaniesz (ale jeśli zrobisz coś nielegalnego, ryzykujesz spędzenie dużej ilości czasu w więzieniu). Jeśli chcesz nauczyć się programować, twoje pragnienie z pewnością ci pomoże, bez względu na to, ile przeszkód staniesz na swojej drodze.

Ciekawość. Zdrowa dawka ciekawości może pobudzić chęć eksperymentowania i doskonalenia umiejętności programowania nawet po przeczytaniu tej książki. Ciekawość sprawia, że ​​nauka programowania jest mniej nudna i ciekawsza. A jeśli jesteś zainteresowany, na pewno będziesz uczyć się i zapamiętać więcej informacji niż jakakolwiek osoba, która jest tym całkowicie niezainteresowana (na przykład twój szef).

Wyobraźnia. Programowanie komputerowe to umiejętność, ale wyobraźnia może pomóc uczynić tę umiejętność bardziej wyrafinowaną i ukierunkowaną. Początkujący programista z dużą ilością wyobraźni zawsze stworzy znacznie ciekawiej i przydatne programy niż wspaniały programista bez wyobraźni. Jeśli nie wiesz, co zrobić ze swoimi umiejętnościami programowania, Twój talent po prostu umrze bez wyobraźni.

Aspiracja, ciekawość i wyobraźnia to trzy najważniejsze cechy, które powinien posiadać każdy programista. Jeśli je masz, musisz się martwić tylko o drobiazgi: jakiego języka programowania się nauczyć (na przykład C ++), co jest nie tak z matematyką itp.

Wśród wielu języków programowania zawsze można znaleźć dokładnie ten język, który jest odpowiedni do rozwiązania danego zadania. Kiedy pojawia się nowy rodzaj problemu, ludzie tworzą nowe języki.

Oczywiście w rzeczywistości komputer rozumie tylko jeden język zer i jedynek, który nazywa się językiem maszynowym. Zazwyczaj program napisany w języku maszynowym wygląda mniej więcej tak:

0010 1010 0001 1101

UN 1100 1010 1111

0101 ONO 1101 0101

1101 1111 0010 1001

Co więcej, bardzo ważne jest, w jakim celu wybiera się język - do nauczania programowania czy do rozwiązania konkretnego zastosowanego problemu. W pierwszym przypadku język powinien być łatwy do zrozumienia, rygorystyczny i, jeśli to możliwe, wolny od pułapek. W drugim to złożone, ale skuteczne i wyraziste narzędzie dla profesjonalisty, który wie, czego chce.

Teraz chciałbym Wam wyjaśnić, czym ma się odróżnić język programowania (Basic, Pascal) od jego implementacji, która zazwyczaj jest prezentowana jako część środowiska programistycznego (Quick Basic, Virtual Pascal) – zestaw narzędzi do edycji tekstów źródłowych, generowanie kodu wykonywalnego, debugowanie, zarządzanie projektami itp. Składnia i semantyka języka programowania są ustalone w standardzie językowym. Każde środowisko programistyczne udostępnia własny interpreter lub kompilator tego języka, co często pozwala na użycie konstrukcji, które nie są ustalone w standardzie.

Rozważ główne i popularne języki programowania

Monter Jest to najjaśniejszy przedstawiciel języków niskiego poziomu, których zestaw pojęć opiera się na implementacji sprzętowej. Jest to narzędzie do automatyzacji programowania bezpośrednio w kodach procesora. Instrukcje maszynowe opisane są w formie operacji mnemonicznych, co pozwala na uzyskanie odpowiednio wysokiej modyfikowalności kodu. Ponieważ zestaw instrukcji na różnych procesorach jest inny, nie ma potrzeby mówić o kompatybilności. Użycie asemblera jest wskazane w przypadkach, gdy konieczna jest bezpośrednia interakcja ze sprzętem lub uzyskanie większej wydajności dla jakiejś części programu ze względu na większą kontrolę nad generowaniem kodu.

Cobol- Język programowania wysokiego poziomu opracowany pod koniec lat pięćdziesiątych. Stowarzyszenie CADASIL zajmujące się rozwiązywaniem problemów handlowych i gospodarczych. Różni się zaawansowanymi narzędziami do pracy z plikami. Ponieważ polecenia programów napisanych w tym języku aktywnie wykorzystują zwykłe angielskie słownictwo i składnię, Cobol jest uważany za jeden z najbardziej proste języki programowanie. Obecnie służy do rozwiązywania problemów ekonomicznych, informacyjnych i innych.

Fortran- Język programowania wysokiego poziomu opracowany przez IBM w 1956 roku do opisywania algorytmów rozwiązywania problemów obliczeniowych. Należy do kategorii języków proceduralnych. Najpopularniejszymi wersjami tego języka są Fortran IV, Fortran 77 i Fortran 90. Jest używany na wszystkich klasach komputerowych. Jego najnowsza wersja jest również używana na komputerach o architekturze równoległej.

Piekło- Język programowania wysokiego poziomu skoncentrowany na zastosowaniu w systemach czasu rzeczywistego i przeznaczony do automatyzacji zadań sterowania procesami i/lub urządzeniami, na przykład w komputerach pokładowych (statkowych, lotniczych itp.). Opracowany z inicjatywy Departamentu Obrony USA w latach 80. XX wieku. Nazwany na cześć angielskiej matematyki Ady Augusty Byron (Lovelace), żyjącej w latach 1815-1851.

PODSTAWOWY(Uniwersalny symboliczny kod instrukcji dla początkujących) Urodzony w latach 60. w Ameryce. BASIC został pomyślany jako prosty język do szybkiego uczenia się. BASIC stał się de facto standardem dla mikrokomputerów właśnie ze względu na jego prostotę zarówno w nauce, jak i implementacji. tej jakości podjęto szereg decyzji (brak pisania na maszynie, numerację linii i niestrukturalne GOTO itp.), które negatywnie wpływają na styl programowania uczących się. Dodatkowo brak środków wyrazistych doprowadził do powstania ogromnej liczby dialektów języka, niekompatybilnych ze sobą.specjalizowane wersje BASIC-a (takie jak Visual Basic), pomimo nabytej „struktury”, mają te same wady, po pierwsze – zaniedbania w odniesieniu do typów i opisów powiązanych systemów) lub jako narzędzie do szybkiego tworzenia aplikacji.

Pascal Opracowany przez słynnego teoretyka N. Wirtha na podstawie idei Algola-68 Pascal był przeznaczony przede wszystkim do nauczania programowania. Zbudowany na zasadzie „konieczne i wystarczające”, ma silną kontrolę typów, konstrukcje do opisywania dowolnych struktur danych oraz mały, ale wystarczający zestaw operatorów programowania strukturalnego. Niestety, wadą prostoty i rygoru są kłopotliwe opisy konstrukcji językowych. Najsłynniejsza implementacja – Turbo/Borland Pascal – pomimo różnic w stosunku do standardu Pascal, to środowisko i zestaw bibliotek, które składają się z nauczanie języka przemysłowy system do tworzenia programów w środowisku MS-DOS.

C i C++ Język C opiera się na wymaganiach programisty systemowego: pełny i wydajny dostęp do wszystkich zasobów komputera, wysokopoziomowe narzędzia programistyczne, przenośność programów między różnymi platformami i systemami operacyjnymi. C++ zachowując zgodność z C, wprowadza możliwości programowania obiektowego poprzez wyrażenie idei klasy (obiektu) jako typu zdefiniowanego przez użytkownika. Dzięki tym cechom C/C++ zajął pozycję uniwersalnego języka do każdego zadania. Jednak jego zastosowanie może stać się nieskuteczne, gdy wymagane jest uzyskanie gotowego do użycia efektu w jak najkrótszym czasie lub gdy samo podejście proceduralne staje się nieopłacalne.

Delphi- nie jest to kontynuacja biznesu Borland Pascal/Borland C, jego nisza - tj. szybkie tworzenie aplikacje (Rapid Application Development, RAD). Takie narzędzia pozwalają szybko tworzyć program pracy z gotowych komponentów, bez marnowania czasu na drobiazgi. Szczególne miejsce w takich systemach zajmują możliwości pracy z bazami danych.

Seplenienie- Język algorytmiczny, opracowany w 1960 roku przez J. McCarthy'ego i przeznaczony do manipulowania listami elementów danych. Wykorzystywany jest głównie w laboratoriach uniwersyteckich w Stanach Zjednoczonych do rozwiązywania problemów związanych ze sztuczną inteligencją. W Europie wolą używać Prologa do pracy nad sztuczną inteligencją.

Prolog- Deklaratywny język programowania wysokiego poziomu przeznaczony do tworzenia systemów i programów sztucznej inteligencji. Należy do kategorii języków piątej generacji. Został opracowany w 1971 roku na Uniwersytecie w Marsylii (Francja) i jest jednym z powszechnie używanych i stale rozwijanych języków. Jego najnowsza wersja to Prolog 6.0


LOGO- Język programowania wysokiego poziomu opracowany w Massachusetts Institute of Technology około 1970 roku w celu nauczania pojęć matematycznych. Jest również używany w szkołach i użytkownikach komputerów osobistych podczas pisania programów do tworzenia rysunków na ekranie monitora i sterowania ploterem pisakowym.

Jawa Jako doskonały przykład specjalizacji, Język Java pojawiły się w odpowiedzi na zapotrzebowanie na doskonale przenośny język, programy, w których sprawnie działają po klienckiej stronie WWW. Ze względu na specyfikę środowiska Java może być dobry wybór dla systemu opartego na technologii Internet/Intranet.

ALGOL- Język programowania wysokiego poziomu skoncentrowany na opisie algorytmów rozwiązywania problemów obliczeniowych. Został stworzony w 1958 roku przez specjalistów z krajów Europy Zachodniej do badań naukowych. Wersja Algol-60 tego języka została przyjęta przez Międzynarodową Konferencję w Paryżu (1960) i była szeroko stosowana na komputerach drugiej generacji. Wersja Algol-68, opracowana przez grupę specjalistów z Międzynarodowej Federacji Przetwarzania Informacji (IFIP) w 1968 roku, uzyskała status międzynarodowego uniwersalnego języka programowania nastawionego na rozwiązywanie problemów nie tylko obliczeniowych, ale również informacyjnych. Chociaż w dzisiejszych czasach Algol praktycznie nie jest używany, służył jako podstawa lub miał znaczący wpływ na rozwój more współczesne języki np. Ada, Pascal itp.
Jeśli chcesz zadać pytanie dotyczące konkretnego języka skorzystaj z forum dla programistów
samego siebie lepszy język nie istnieje. Jeśli zamierzasz zostać profesjonalistą w pisaniu programów, musisz nauczyć się jednego z języków programowania wysokiego poziomu (najpopularniejszym językiem programowania jest C++), a także jednego z języków programowania baz danych ( na przykład SQL). Po nauczeniu się języka programowania C++ nie możesz się pomylić. Znając ten język, zawsze możesz znaleźć pracę w dowolnej firmie programistycznej.

Pomimo dużej popularności języka programowania C++, często używane są inne języki. Wiele starszych komputerów nadal uruchamia programy napisane w języku programowania COBOL. Dlatego potrzebujemy programistów, którzy mogą ulepszać te programy, a także pisać nowe. Bardzo często duże firmy płacą takim programistom wysokie pensje.

Jeśli masz zamiar pracować samodzielnie, lepiej nauczyć się tworzyć własne programy dla baz danych. Aby to zrobić, będziesz musiał nauczyć się języków programowania, takich jak SQL lub VBA, które są używane w Microsoft Access. Aby tworzyć strony internetowe, musisz znać HTML, a także trochę znajomości Java, JavaScript, VBScript i innych języków programowania Internetu. Najbardziej potrzebny będzie język programowania, który pozwoli Ci łatwo i szybko rozwiązać zlecone Ci zadania. Może to być język C++, BASIC, Java, SQL lub asembler.
Podsumowując, zauważamy, że z profesjonalnego punktu widzenia nie jest tak ważne w jakim języku iw jakim środowisku pracuje programista, na ile wykonuje swoją pracę. Sprzęt się zmienia i OS... Nowe zadania wynikają z szerokiej gamy tematów. Odchodzą w przeszłość i pojawiają się nowe języki. Ale ludzie pozostają – ci, którzy piszą i ci, dla których pisane są nowe programy i których wymagania jakościowe pozostają takie same niezależnie od tych zmian.
Tutaj omówiliśmy podstawy programowania i główne języki programowania.

Życzę powodzenia w nauce programowania!