Wybór pierwszego języka programowania

Z pewnością jest to jedno z pytań, które najczęściej pojawiają się w mojej skrzynce odbiorczej, kiedy mówię o programowaniu. Jeśli zamierzamy rozpocząć serię artykułów, które pozwolą Wam nauczyć się programować i oddawać darmową wiedzę w postaci wkładów do społeczności wolnego oprogramowania / open source na całym świecie, to niezbędna jest odpowiedź na to podstawowe, choć nieco trudne pytanie. Jakiego języka programowania powinienem się nauczyć?

Trochę de Historia

Aby zacząć rozumieć i wybierać język programowania, musimy najpierw dowiedzieć się trochę o ich historii, ich zastosowaniach i funkcjach oraz o tym, jak rozwiązują różne potrzeby w czasie.

Języki maszynowe (niski poziom)

Powszechnie znany jako Montaż, to języki programowania, które moglibyśmy zdefiniować jako dialekty bardziej ogólnego języka ... Brzmi to trochę skomplikowanie, ale zamierzam to zilustrować ... Wiemy, że uniwersalnym językiem informatyki jest energii elektrycznejoznacza to, że ostatecznie to, co czyta komputer, jest 0sy 1tak, nazwijmy to ekomputerowy angielski. W tym przykładzie hiszpański jest podstawową zasadą, ale jak dobrze wiemy, hiszpański używany przez Latynosów nie jest tym samym, co hiszpański używany w Hiszpanii, a nawet wtedy hiszpański z Peru nie jest tym samym, co hiszpański z Argentyny. Oczywiście wszyscy mamy prawie te same słowa (0sy 1s), ale użycie i znaczenie mogą się różnić w zależności od kontekstu.

Dzieje się to na poziomie procesora. Kiedy rozmawiamy o architektury obliczeniowe, (amd64, intel, arm, ...) odnosimy się do dialektu tego komputerowy hiszpański. Dzieje się tak, ponieważ różne firmy na swój sposób rozumieją kolejność i znaczenie, więc niektóre różnią się szczegółami, takimi jak przepływ prądu lub kolejność, w której elementy mają być przechowywane. 0sy 1s.

Te języki programowania są niezwykle szybkie, ponieważ działają na najniższym możliwym poziomie programowania, ale są w dużym stopniu zależne od architektury i na pewno są nieco bardziej skomplikowane w nauce niż reszta. Często wymagają one szerszej bazy pojęć w celu przekształcenia danych i uruchomienia na nich przydatnych rzeczy. Dla miłośników gier wideo przykładem mogą być konsole SEGA, które wykorzystywały Assembly do programowania swoich gier. Oczywiście w tamtym czasie ilość pamięci była minimalna w porównaniu do dzisiejszego i konieczne było opanowanie języka, który byłby szybki i tworzył lekkie programy.

Języki wysokiego poziomu

Ta duża grupa rozważa języki, które pojawiły się później Montaż. Potrzeba uzyskania kodu przenośnego doprowadziła do powstania grupy języków tzw skompilowane. Wśród nich jako pierwszy wykorzystał C, który od lat 70-tych dominuje w programowaniu na poziomie systemu operacyjnego.

Języki kompilowane

Zobaczmy praktyczny przykład tego, co komentuję. Spójrzmy na bardzo prosty program w języku C, który drukuje jedną linię kodu.

Posiadać. Christopher Diaz Riveros

Po skompilowaniu mamy:

Projekt własny: Christopher Díaz Riveros

Ale teraz zobaczmy, co musielibyśmy napisać, aby powtórzyć ten sam wynik w kodzie asemblera:

Posiadać. Christopher Diaz Riveros

To jest tłumaczenie naszych 3 linii kodu z języka simple.c, plik simple.s jest tworzony za pomocą polecenia gcc -S simple.c i to właśnie zrozumiałby nasz procesor w dialekcie Montaż. Oczywiście w celu utworzenia pliku wykonywalnego składającego się z 0sy 1s plik musi zostać przetworzony simple.s i połącz go ze współdzielonymi bibliotekami naszego systemu. Odbywa się to za pomocą pliku monter (as) oraz conector (ld).

Języki kompilowane zapewniają ogromną przewagę nad niskopoziomowymi przenośne. Przenośność zapewnia kod, który można wykonać na różnych procesorach bez konieczności generowania specjalnego kodu dla każdej architektury. Kolejną oczywistą zaletą jest prostota, z jakiej korzysta podczas czytania i pisania kodu. Wśród jego głównych wad mamy dużą złożoność, ponieważ w porównaniu z następującymi typami języków, które zobaczymy, wolność, jaką oferuje C, może być szkodliwa, jeśli nie wiesz, jak kontrolować, z pewnością jest to jak przekazanie broni , może się zdarzyć, że przy braku doświadczenia osoba zakończy się postrzeleniem własnej stopy, próbując wyczyścić broń.

Języki interpretowane

W tej grupie mamy dużą różnorodność języków, wśród najważniejszych mamy Python, Ruby, Javascript, PHP itp ... Podstawową ideą tych języków jest zapewnienie szybkiego sposobu tworzenia i uruchamiania programów Dzieje się tak, ponieważ wiele trudnych procesów jest wykonywanych w interprecie, a programowanie logiki jest tym, co jest zaimplementowane w kodzie. Spójrzmy na ten sam przykład powyżej, ale tym razem napisany w Pythonie:

Posiadać. Christopher Diaz Riveros

Wśród najbardziej wyróżniających się rzeczy widzimy, że pierwsza linia odpowiada za wywołanie interpretera (programu, który wykona naszą aplikację), a kolejny kod jest bardziej „prosty” niż jego wersja w C, ponieważ cała ciężka praca jest wykonywane na tłumaczu.

Posiadać. Christopher Diaz Riveros

Języki interpretowane zapewniają deweloperowi większą warstwę bezpieczeństwa, ponieważ mają bardziej rygorystyczną kontrolę bezpieczeństwa (UWAŻAJ, że nie są doskonałe, ponieważ nawet najlepsi mogą popełniać błędy) i nie ponosimy już ryzyka wystrzelenia broni bez zdawania sobie z tego sprawy, ponieważ za pierwszym razem tłumacz podnosiłby alarm, a wykonanie byłoby anulowane. Główna wada staje się oczywista podczas wykonywania programu, ponieważ jest on wolniejszy niż jego binarny odpowiednik, a to właśnie z powodu większej ilości przetwarzania, aby móc zapewnić, że kod działa. Jeśli program nie wymaga wyjątkowo krótkich terminów, różnica może pozostać niezauważona, ale jeśli mówimy o tysiącach lub milionach danych na sekundę, różnica staje się wykładniczo zauważalna w językach kompilowanych.

Pisanie na maszynie

To jest cecha języków programowania. Mogą to być silnie słabo wpisane. Zamierzam zostawić ten temat na inny post, ponieważ konieczne i ciekawe jest zrozumienie, w jaki sposób pamięć jest przechowywana w programie, ale na razie musimy tylko dokonać rozróżnienia: języki silnie wpisane to te, które wymagają znajomości typu danych, które są przesyłane do pracy na zmiennej lub stałej, podczas gdy słabo typy mogą wykonywać konwersje, więc domniemany a wszystko będzie zależeć od hierarchii konwersji, po której nastąpi język. (jeśli nie jest to teraz zrozumiałe, nie ma problemu, zostawimy to na później)

Paradygmaty

Jak wszystko w świecie GNU / Linuksa, języki programowania są oparte na paradygmatach, a wokół nich powstają społeczności. Na przykład mamy Fundacja Pythona o Rubin o PHP o Bash (w tym przypadku jest to społeczność GNU). To, co chcę osiągnąć, to to, że nie mogę wyrazić dużej liczby zalet i wad, które każdy z nich ma, ale mogę powiedzieć, że tam, gdzie jest wolny język programowania, istnieje społeczność, w której można się uczyć i uczestniczyć. Warto wspomnieć, że wielu, jeśli nie wszyscy, tłumaczy języka jest napisanych w języku C lub w jakiejś bliskiej pochodnej, a ich rozwój jest zwykle prowadzony przez mniejszą grupę społeczności, która jest odpowiedzialna za decyzje, które będą miały wpływ na wszystkich użytkowników języka. Można nawet tworzyć instytucje zapewniające prawidłowy rozwój języka, jak ma to miejsce w przypadku C.

Który wybrać?

Dość już rozmawialiśmy o językach i nadal nie odpowiadam na najważniejsze 😛. Mam jednak nadzieję, że po przejrzeniu tego małego artykułu nie muszę ci mówić, który język wybrać, ponieważ dzięki tym informacjom jesteś w pełni w stanie znaleźć taki, który wzbudza ciekawość. Oczywiście, jeśli chcesz nauczyć się programowania w języku Montaż zajmie dużo czasu, zanim będziesz mógł mieć coś funkcjonalnego, czas zostanie znacznie skrócony, jeśli zdecydujesz się na język kompilowany, gdzie oprócz posiadania przenośności na systemach * NIX, będziesz mógł poznać informacje dotyczące działania tego samego systemu, ponieważ jesteś w kontakt z C lub pochodnymi sprawia, że ​​w taki czy inny sposób dowiadujesz się, jak ogólnie działa system operacyjny. Wreszcie, jeśli chcesz nauczyć się czegoś lekkiego, a to pozwala ci dużo zrobić bez potrzeby dużego zrozumienia, języki interpretowane są świetnym sposobem na naukę i rozwijanie umiejętności programowania.

Dowiedz się czegoś ekscytującego

To najlepsza rada, jaką mogę ci dać, jeśli chcesz się czegoś nauczyć, musisz najpierw znaleźć coś ekscytującego, w przeciwnym razie dość trudno będzie pokonać typową krzywą uczenia się dowolnego języka programowania. Załóżmy, że zarządzasz systemami, w takim przypadku może być konieczne nauczenie się idealnego języka Skrypty (zinterpretowane), w ramach tych mamy Perl, Python, Bash itp. itd. Być może twoje są gry, istnieje wiele projektów w językach takich jak Javascript, Lua, C ++, w zależności od typu gry, w którą chcesz grać. Może chciałbyś stworzyć narzędzie na poziomie systemu, ponieważ mamy C, Python, Perl, jak zobaczysz, niektóre są powtarzane, a to dlatego, że wiele języków może być używanych do wielu zadań, dlatego definicja języki wielofunkcyjne w większości z nich.

Rozpocznij projekt

Nie mam przez to na myśli, że tworzysz następujący kompilator lub nawet następujący język programowania, projekt może polegać na naprawieniu małego błędu w twoim ulubionym programie, może nawet pomóc ulepszyć dokumentację. Dlaczego dokumentacja? ponieważ nie ma lepszego sposobu, aby dowiedzieć się, jak działa oprogramowanie, niż przeczytanie i pomoc w napisaniu jego dokumentacji, ponieważ po kodzie źródłowym jest to największe źródło informacji o programie, jakie znajdziesz. Za chwilę zobaczymy, jak odczytać kod projektu i zrozumieć funkcje i wartości, które przejmują.

Bardzo dziękuję za przybycie i jak zawsze Twoje komentarze pomagają mi generować lepsze treści i wiedzieć, na czym się skupić, Pozdrowienia.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   anonimowy powiedział

    Jak zawsze 10 !!!!!! Dzięki za twoje artykuły. Pozdrowienia i nie tylko !!!!

    1.    ChrisADR powiedział

      Bardzo dziękuję 🙂 zachęca mnie do dalszego pisania. Twoje zdrowie

  2.   Rubén powiedział

    Myślę, że błędem jest zadawanie pytania „który język wybrać?” Należę do tych, którzy uważają, że język jest najmniejszym z nich, ważne jest, aby nauczyć się podstaw programowania i „myśleć komputerowo”. Zdecyduj się na składnię, jej typowanie, czy obsługuje OOP, jego narzędzie itp. Myślę, że to coś, co przyjdzie naturalnie w nauce, a przecież każdy programista zna więcej niż 1, 2 i 3 języki ... a dzięki koncepcjom programistycznym (a nie składni), które posiada, jest w stanie programować w języku, w którym nie ma jeszcze doświadczenia.
    Jednak dla wtajemniczonych myślę, że dobrym językiem może być Python ze względu na swoją prostotę, ale przede wszystkim idź trochę dalej, przestudiuj algorytmy i dowiedz się, jak wszystko działa „w środku”.

    Pozdrowienia ChrisADR

    1.    ChrisADR powiedział

      Cześć Rubén, dzięki za udostępnienie
      Jest coś, czego nauczyłem się z biegiem czasu w świecie programowania, a mianowicie, że „ten, kto dużo zajmuje się, nie uciska” i przez to znane zdanie mam na myśli to, że wiele razy, a zwłaszcza najbardziej entuzjastyczni, decydują się na próbę trochę i mają bardzo szybkie zwroty w nauce kodowania. Uważam, i jest to moja osobista opinia, że ​​dobry programista powinien znać i opanować język kompilatora i języka interpretera, oprócz posiadania pojęcia jakiegoś dialektu asemblera.
      Powód jest następujący: prototypowanie musi zawsze być czymś prostym i szybkim, łatwym do wygenerowania, co generalnie pokazuje wynik, ale jeśli to nie wystarczy, musi istnieć „plan B”, do którego można się odwołać, gdy tłumacz dotrze do jego limit.
      Znajomość dialektu asemblera nie tylko dodaje pewności siebie, ale także uczy myślenia „obliczeniowego”, ale oczywiście ta część jest najbardziej skomplikowana iz pewnością nie wszyscy programiści do niej przychodzą.
      Ale wracając do tematu, ponieważ myślę, że głównym pomysłem jest „wybierz język i dużo ćwicz”, ponieważ tak naprawdę jedynym sposobem na dobre programowanie jest czytanie i pisanie kodu, a to jest coś, czego się nauczyłem społeczność jądra Kiedy zachowujesz tę samą składnię przez długi czas, przestajesz widzieć formularz i zaczynasz martwić się o TŁO. Idea wyboru języka lub składni od samego początku polega na tym, że można przyzwyczaić się do jego czytania i pisania w taki sposób, że można zacząć czytać ZNACZENIE programu zamiast jego składni.
      To jest główny powód tego postu, że każdy wybiera swój język, aby w dalszej części wyjaśnić pojęcia, być może dzięki temu wyjaśnione zostaną wątpliwości 🙂
      Pozdrowienia i podziękowania za udostępnienie.

  3.   Deibis Contreras powiedział

    dzięki za post był dobry.

    pozdrowienia

    1.    ChrisADR powiedział

      Cześć Deibis, dziękuję za udostępnienie 🙂 Pozdrowienia

  4.   JorgeFS powiedział

    Moja rada: cokolwiek innego niż PHP. Dwadzieścia lat temu PHP miało pewien sens w swoim istnieniu ze względu na wysoki poziom złożoności, jakim było programowanie sieci w innym języku przy użyciu CGI. Ale obecnie istnieje ogromna różnorodność frameworków, które sprawiają, że tworzenie stron internetowych jest znacznie przyjemniejsze w zaawansowanych językach, takich jak Django dla Pythona, Spring dla Javy czy Rails dla Rubiego. Chociaż PHP obecnie pojawia się na listach popularności wszystkich języków, moim zdaniem PHP z czasem straci na znaczeniu.
    Zdecydowanie radzę zacząć od C \ C ++, aby zrozumieć rzeczywistość programowania, chociaż krzywa uczenia się jest stroma.
    Pozdrowienia.

    1.    ChrisADR powiedział

      Cześć Jorge, dziękuję za udostępnienie, pamiętam tylko Laravel, który jest całkiem solidnym frameworkiem 🙂 Osobiście nigdy nie lubiłem Springa ani Javy do tworzenia stron internetowych, uważam to za dość kłopotliwe, ale przypuszczam, że jest to część czasu, w którym spędzili rynek, w tamtym czasie byli pionierami, a dziś z pewnością nowoczesne alternatywy (Js, Python i Ruby) były w stanie ulepszyć sposób prezentacji kodu, który jest czytelny i modyfikowalny bez większego nakładu pracy.
      Jestem też skłonny do ludzi uczących się C / C ++ w pewnym momencie swojego życia, zacząłem od Javy, ale myślę, że na tym polega piękno programowania, możesz zacząć od wszystkiego, co chcesz, o ile jesteś konsekwentny bądź pomocny 🙂 Pozdrawiam

    2.    Rubén powiedział

      Nie mogę się już z tobą nie zgodzić. Zacząłem wiele lat temu od C i VB, aby później skupić się na PHP i JS (ponieważ skupiłem się na tworzeniu stron internetowych), a później podczas studiów uczyłem się głównie C / C ++ i Java.
      PHP ma wiele zalet, których nie mogłem wymienić w tej wiadomości. PHP7 jest szybki (szybszy niż Python ... bez użycia hhvm, różnych pamięci podręcznych, frameworków takich jak Phalcon czy kod bajtowy w przypadku Pythona), ma ogromną liczbę bibliotek i frameworków, ma ogromną ilość bezpośrednio zaimplementowanych funkcji do wykorzystania je w dowolnym momencie, ich składnia tak podobna do C sprawia, że ​​migracja do innych języków jest bardzo łatwa.
      30% stron internetowych na świecie jest tworzonych za pomocą WordPress (PHP) i wydaje się, że to się nie zmienia, Wikipedia go używa, Facebook (z hhvm) i duża liczba witryn, łącznie 80%.

      Przypominam, że Ruby on Rails jak Django mają już 12 lat! Jaki poziom osiągnęli w tym czasie? I oczywiście mówimy o 2 frameworkach, które praktycznie mają monopol i nie ma typu fragmentacji. Jakie mam inne poważne alternatywy? Mówienie, że PHP straci na znaczeniu, nie ma większego sensu.

      Teraz, gdy Python jest w modzie, ponieważ szybko się uczy, jest prostym językiem i sprzedają go Ci jako „zostań programistą w 20 godzin z Pythonem i pracuj nad nim”, przy wsparciu firm takich jak Google i że teraz jest moda na szukanie nowych języków (Go, Dart….), aby wyróżnić się w CV (lub jako codzienne narodziny 50 frameworków dla Javascript!), nie oznacza, że ​​coś się zmienia.

      Ruby to bardzo interesujący język, ale tak bardzo łamie ustalone wzorce, że trudno mi uwierzyć, że stał się bardziej popularny niż PHP. Oczywiście uważam, że Ruby jest najgorszym językiem do rozpoczęcia programowania.
      Rozumiem, że mówisz mi, że programowanie w Pythonie może być przyjemne, nawet Ruby z jego nieskończoną liczbą osobliwości ... ale Spring z Javą? Naprawdę? Java może być wieloma rzeczami ... ale przyjemniejsza niż Python i PHP?

      Dobrze jest zacząć od Pythona, ale jeśli będziesz trzymać się samego Pythona, ryzykujesz, że wiele firm uwierzy, że Twój poziom programowania nie jest „głęboki” (nawet jeśli jesteś bardzo dobry w Pythonie). Dzieje się tak, ponieważ konkurujesz z innymi językami „uniwersalnymi”, takimi jak C ++ czy Java. Możesz programować w Pythonie, nie wiedząc, czym do cholery jest wskaźnik, operacje bitowe, jak działa garbage collector i długie itd.
      Python jest prawdopodobnie najmniej podobny do „klasycznego programowania”, które istnieje i może być postrzegane jako „język dziecięcy” (posłuchaj metafory), a to z kolei jest zaletą i wadą.

      1.    JorgeFS powiedział

        „Python jest chyba najmniej podobny do„ klasycznego programowania ”, które istnieje i może być postrzegane jako„ język dziecięcy ”(posłuchaj metafory), a to z kolei jest zaletą i wadą”. LOL, to jedna z najzabawniejszych rzeczy, jakie widziałem o Pythonie. Czy kiedykolwiek naprawdę nauczyłeś się Pythona?
        Od jak dawna na całym świecie poza PHP?
        Przyjaciel PHP urodził się martwy. PHP (\ d +) jest bardzo obciążony ze względu na bardzo zły projekt początkowy i aby utrzymać społeczność użytkowników, nadal bardzo dokładnie przeciąga wszystkie te początkowe błędy projektowe. PHP narodziło się bez modularności, z wieloma funkcjami w stylu C (które, nawiasem mówiąc, nie wiem, skąd je wziąłeś, ponieważ jego składnia jest podobna do C, można go łatwo przenieść na inne języki). Język wysokiego poziomu, tak jak powinien zachowywać się PHP, ma takie brzydkie rzeczy, jak ta lista funkcji wymienionych na jego oficjalnej stronie http://php.net/manual/en/indexes.functions.phpDzieje się tak, ponieważ narodził się bez modułowości, dlatego wszystko jest brudnie pomieszane i bez przestrzeni nazw.
        To jest fragment kodu PHP:
        „Stream_notification_callback”);
        stream_context_set_params ($ ctx, $ params);
        var_dump (stream_context_get_params ($ ctx));
        ?>
        czy w którymś momencie można ustalić, skąd zostały zaimportowane wszystkie te funkcje „strumienia”? NIE, można by wtedy powiedzieć, że są to funkcje wbudowane, ale wtedy cały ekosystem jest zbudowany funkcjami? I tak w kodzie PHP jest sporo bzdur, że jeśli nie jesteś w stanie zrozumieć złożoności i bezużyteczności tak złego projektu, wybacz mi, ale wciąż ma wiele do obejrzenia.
        Wordpress to doskonałe rozwiązanie programowe, ale nie oznacza to, że ma dobre zaplecze technologiczne. Możesz wbijać kamieniem i wybijać gwoździe zębami, i nadal możesz wykonywać doskonałą stolarkę, ale oczywiście o wiele więcej pracy niż inny stolarz, który używa dobrego młotka.

        Z drugiej strony: „zostań programistą w 20 godzin z Pythonem i pracuj nad tym”, nigdy nie widziałem takiej głupoty. Możesz zbudować stronę internetową w PHP w 20 godzin i nie mając żadnej wiedzy o tym, jak działa programowanie internetowe lub o samym programowaniu. W rzeczywistości jest to powód, dla którego PHP jest tak popularne, ponieważ nowicjusze po wejściu na ten świat postrzegają PHP jako punkt szybkiego rozwoju (dlatego tak dużo kodu PHP jest do bani).
        Jeśli chodzi o wady Pythona, jedyną, w której udało mu się pracować ze wskaźnikami, była w każdym razie Python jest językiem wysokiego poziomu (podobnie jak Java) i nie używa ich na poziomie składni; ale operacje bitowe, poważne?, masz na myśli to x << y, x >> y: https://wiki.python.org/moin/BitwiseOperators. Poważnie zrozumiałem sprawę ze śmieciarką znacznie mniej: https://docs.python.org/3/library/gc.html.
        Luki PHP:
        -PHP ma bardzo słaby projekt programowania obiektowego (OOP).
        - Nie możesz jeszcze przeciążać operatorów.
        -Niespodzianka, function overloading w PHP nie jest to naturalnie oczekiwane od tej koncepcji.
        … .. i po prostu się nudziłem hehe.
        Pozdrowienia.

        1.    Rubén powiedział

          Umieściłem w nawiasach „zrozum metaforę” (porównując Pythona z C ++ / Javą w tym samym środowisku pracy), jasne jest, że tego nie zrozumiałeś. Mógłbym powiedzieć, że programista C ++ może nauczyć się Pythona znacznie szybciej niż programista Pythona może nauczyć się C ++, tak samo jak nie jest zaskoczeniem, że średnia pensja programisty C / C ++ jest wyższa niż Python jeden.
          Mógłbym ci to wyjaśnić innymi przykładami, nawet rysunkiem! ale wydaje się, że skupiasz się tylko na dekontekstualizacji i wyśmiewaniu tego, co umieściłem.

          Nigdy nie powiedziałem, że PHP jest najlepszym językiem na świecie lub że ma wzorowy wygląd, nie wiem, skąd to masz. Myślę, że zanim zaczniesz oceniać wiedzę innych, powinieneś poprawić umiejętność czytania ze zrozumieniem. Prawdą jest (i powiedziałem w mojej wiadomości), że programowanie za jego pomocą jest bardzo zwinne, oprócz całego ekosystemu frameworków, bibliotek i narzędzi, które można znaleźć.
          Jakiego rodzaju porównania dokonujemy? Python jako język uniwersalny czy dla sieci? W takim razie dlaczego porównujemy to do PHP? PHP ma specyficzne pole i to właśnie w nim Python (z udziałem 0.2%, który nie zmienił się przez cały rok) blednie obok PHP.
          Teraz zobaczymy trendy PHP; od 82,4% w styczniu 2017 do 83.1% w styczniu 2018: https://w3techs.com/technologies/history_overview/programming_language

          Czy Python zdetronizuje PHP? W którym roku? za jakie pięć lat? dekada?
          Python będzie mógł być używany w wielu innych zadaniach, a nawet stanie się szerzej stosowany niż PHP, ale Python jako język do tworzenia stron internetowych jest jeszcze lata świetlne od bycia odpowiednim, 0.2% stagnacji wobec 83.1% (wzrost w tym roku) .

          Traktujesz również rzeczy za pewnik, mówiąc, że nie wychodzę poza PHP, sugerując, że znam tylko PHP, podczas gdy dokładnie nie programowałem w PHP przez długi czas haha. Obecnie ze względów zawodowych programuję głównie w Javie.
          Nie powiedziałem też, że programując w Pythonie nie masz wiedzy na temat bitów, garbage collectora czy wskaźnika. Możesz raczej programować w Pythonie, nawet nie wiedząc, co to jest. Jednak bardzo wątpię, żeby tak było w przypadku programisty C ++. I oczywiście dokonuję porównania, gdy Python wkracza w dziedzinę „języka uniwersalnego”, a nie do programowania internetowego.

          Zostać programistą w 20 godzin to po prostu żart, przesada. Mógłbym jednak umieścić tutaj różne linki dotyczące platform edukacyjnych online i kursów, które obiecują podobne rzeczy. Nie obwiniaj mnie, obwiniaj za to rynek pracy, który uważa, że ​​zostanie „ekspertem programistą” to kwestia wzięcia udziału w 20-godzinnym kursie. A Python to jeden z modnych języków, a jednocześnie najszybciej uczący się ... biały i butelkowy.

          Nalegam, opierasz swoją wiadomość na stwierdzeniu, jak zły jest PHP (co w pewnym sensie się zgadzam). Wydaje mi się to poprawne, z wyjątkiem tego, że moja wiadomość nie dotyczy tego, ale dlaczego PHP będzie nadal używane i nie zniknie jutro, tak jak myślisz.

          pozdrowienia

  5.   nikt powiedział

    C -> Idź -> (Lisp | Haskell | Java | cokolwiek)

    1.    ChrisADR powiedział

      Niedawno czytelnik wysłał mi na mój e-mail rekomendację książki Go, z pewnością języka, który należy wziąć pod uwagę w przyszłości io którym być może będzie tutaj wpis 🙂 Wiele grafik do udostępnienia

  6.   mvr1981 powiedział

    No cóż ... a co mam programować? Po co dziś uczyć się języka programowania z tak dobrymi i doświadczonymi programistami, którzy już istnieją? Jakie problemy mogę rozwiązać, a których inni jeszcze nie rozwiązali w dużo bardziej efektywny sposób?… Krótko mówiąc: jak oryginalne jest dziś bycie programistą? Jak mogę współpracować z innymi, nie będąc wyrzucanym lub wykluczanym przez mój brak wiedzy i doświadczenia?

    1.    ChrisADR powiedział

      Witam mvr1981, naprawdę ciekawe pytania 🙂 będziemy je przewijać od ostatniego do pierwszego.

      Jak mogę współpracować z innymi, nie będąc wyrzucanym lub wykluczanym przez mój brak wiedzy i doświadczenia?

      Jeśli nie chcesz zostać wyrzucony, pierwszym krokiem jest nauczenie się tego procesu, nie możesz sobie wyobrazić liczby ludzi, którzy przychodzą do projektów, którzy chcą robić rzeczy wyłącznie po swojemu, chcą, aby społeczność dostosowała się do ich życzeń. To na pewno tak, jakbym przychodził do twojego domu, robiąc bałagan i lekceważąc twoją rodzinę (tak się czuję wiele razy). Jeśli chcesz temu zapobiec, zwróć szczególną uwagę na wytyczne, jak to zrobić, środki, za pomocą których możesz to zrobić, i nie wysyłaj czegoś niekompletnego, jeśli potrzebujesz pomocy, zawsze są środki do komunikacji, ale prawdopodobnie zła praca stworzyć złe pierwsze wrażenia. Jeśli nie chcesz się wykluczać, to zależy od ciebie, możesz zobaczyć go jako bezużytecznego programistę, który nie wie, co robi, lub tego, który jest na najlepszej drodze do zostania doskonałym programistą, a to dzieje się tylko z praktyką i na pewno z błędami po drodze. Wiele razy myliłem się, zanim uzyskałem status programisty w Gentoo, i to nie powstrzymało mnie przed próbami pomimo „złego czasu”.

      Jak oryginalne jest dziś być programistą?

      - Nie chodzi o oryginalność, to dziś konieczność, pomyśl tylko o tym, 20 czy 30 lat temu pisanie było koniecznością, wiele prac wywnioskowało, że wiesz lub przynajmniej potrafisz to zrobić. Dziś wiedząc, że Office jest koniecznością, praktycznie nie ma pracy, która nie stawia Cię przed dokumentami Office. Jutro, już niedługo, programowanie będzie koniecznością. I dotyczy to również z osobistego punktu widzenia, wiedza o tym, co dzieje się w programach, którym powierzasz rzeczy tak ważne, jak pieniądze, zdrowie, rodzina, jest dla mnie czymś logicznym, bo ich ograniczenia możesz poznać tylko wtedy, gdy wiesz, jak one pracować i żeby to wiedzieć, musisz umieć programować.

      Jakie problemy mogę rozwiązać, a których inni jeszcze nie rozwiązali w dużo bardziej efektywny sposób?

      -Byłbyś zaskoczony ilością cechy które są dziś wymagane, a prawdę mówiąc, nie ma znaczenia, że ​​w społeczności są najlepsi programiści na świecie, praca zawsze będzie większa niż możliwości twórców, mogę to sprawdzić w Gentoo, są ludzie, którzy rozwijają kernel, ludzie pracujący dla Google, Sony itp.… jedyne co nas łączy to to, że nikt nie ma tyle czasu, ile chciałby móc wykonać całą oczekującą pracę.

      Po co dziś uczyć się języka programowania z tak dobrymi i doświadczonymi programistami, którzy już istnieją?

      - Odpowiada na to pytanie drugie 😉 Ale teraz mogę dodać, że pokolenia muszą być w stanie wesprzeć już rozwiniętą pracę, przez to mam na myśli, że ci „doświadczeni” programiści będą stopniowo znikać i będzie to konieczne dla „ młodsi »Deweloperzy biorą na siebie odpowiedzialność i pomagają w utrzymaniu cyklu przy życiu, społeczność, która nie ma młodych i niedoświadczonych ludzi, jest podatna na znikanie z czasem, właśnie dlatego, że nie będzie możliwości przekazywania wiedzy.

      A co mam zaplanować?

      -To chyba najtrudniejsza rzecz do odpowiedzi, ale spróbuję podać przykład poco. Niedawno zacząłem cierpieć na problemy z GNOME 24 i jego połączeniem z Waylandem, które uniemożliwiają programom takim jak Shutter robienie zrzutów ekranu. Jest to dla mnie problem, ponieważ kiedy piszę artykuły, muszę wam pokazać, co mówię 🙂 rozglądając się trochę dotarłem do aplikacji GNOME Screenshot, delikatnie mówiąc „minimalistycznej”. Wśród jego funkcji jest jedna z robienia regionu ekranu, ale co się stanie, jeśli nie zrobię dobrze zdjęcia? Cóż, muszę wyjść i ponownie wejść do programu, z pewnością coś żmudnego, przycisk z napisem „Zrób ponownie” lub coś w tym rodzaju, który pozwala mi wykonać nowe ujęcie bez konieczności wychodzenia i ponownego wchodzenia, by mi pomógł. To mały projekt programowania, nigdy nie programowałem niczego w środowisku GNOME, więc oczywiście muszę się wiele nauczyć przed wysłaniem mojej "łatki" z nowym przyciskiem, ale po drodze nauczę się programować i mam nadzieję, że to cecha przyda się więcej niż jednemu, gdy będzie dostępny dla wszystkich.

      To jest przykład, to jest coś prostego i na pewno każdy inny "ekspert" programista mógłby to już zrobić, ale z powodu ewidentnego braku czasu tak nie było, teraz to ja mam możliwość to bez bycia super programistą.

      Teraz tylko od Ciebie zależy, czy znajdziesz coś, co uczyniłoby Twoje życie „prostszym” w oprogramowaniu, którego używasz tak często. Piękno tego polega na tym, że jeśli zastosujemy się do rady, którą dam ci w następnych artykułach, język nie będzie miał znaczenia, ponieważ Poznasz podstawy, aby zacząć rozumieć kod, który czytasz i modyfikować go, aby robić to, co chcesz, to bardzo szczególne uczucie 🙂

      Pozdrawiam i jeszcze raz dziękuję

      1.    nikt powiedział

        Myślę, że dopiero po otwarciu programu przechwytującego gnome najłatwiej jest przejść do skrótów klawiaturowych i przypisać trzy kombinacje print, aby przechwycić wszystkie alt-print, aby przechwycić aktywne okno i super-print, aby dokonać wyboru z przechwytywania region, dostępne skróty są tutaj, wystarczy je przypisać

        1.    ChrisADR powiedział

          Dlatego podajemy przykład 🙂 ponieważ małe rzeczy, takie jak ten przycisk, są programowaniem, mogą pomóc niektórym, ponieważ mogą pozostać niezauważone przez innych, ale z pewnością spełniają główny cel, pomagają w nauce programowania i ustępują nowym funkcjom, Po tym przycisku można rozpocząć wiele rzeczy, takich jak zarządzanie sesją lub ekran podglądu wszystkich wykonanych zdjęć lub w skrócie wiele rzeczy, które można zrobić. Chodzi o to, że znajdziesz coś, co wzbudzi Twoją ciekawość, każde oprogramowanie działające w Twoim systemie może wymagać ulepszeń lub nowych funkcji, które z powodu braku czasu lub personelu nie zostały jeszcze zaimplementowane 🙂

      2.    mvr1981 powiedział

        Dzięki Tobie. to bardzo dobre odpowiedzi.

    2.    Guillermo powiedział

      Cóż, dla kogoś, kto nie będzie profesjonalistą w tej dziedzinie, należałoby zobaczyć, w jakim środowisku pracuje, zarówno w przypadku zadań administracyjnych, jak i dyrektyw, ciekawie byłoby znać na przykład Python / Basic i wiedzieć jak do programowania makr w pakietach biurowych takich jak LibreOffice czy MS Office. Są chwile, kiedy może to zaoszczędzić wiele godzin pracy Tobie lub innym pracownikom, którzy Cię otaczają i poprosić ich o wykonanie dowolnego powtarzalnego zadania, możesz stworzyć dashboard, aby szybko obliczyć główne wskaźniki firmy po połączeniu się z bazą danych i wykonać zapytanie SQL.
      Jak wszystko, jeśli znasz narzędzia na wyciągnięcie ręki, możesz pomyśleć o tym, jak najlepiej je wykorzystać. Nie wszystko jest wymyślone.

  7.   Marcelo powiedział

    Guillermo, całkowicie się z tobą zgadzam: „Nie wszystko jest wymyślone”, a to, co zostało wynalezione, można modyfikować. Musisz maksymalnie wykorzystać narzędzia i użyć tego, które najlepiej odpowiada Twoim potrzebom.

  8.   Ricardo powiedział

    W przypadku programowania pierwszym językiem, którego się uczymy, jest angielski, potem ten, który najbardziej do nich przemawia i wydaje im się najpiękniejszy.

    1.    ChrisADR powiedział

      Nie napisałem tego, ale prawda 🙂 znajomość języka angielskiego bardzo pomaga, ponieważ jest w nim napisana większość języków, ale także dlatego, że większa ilość informacji z pierwszej ręki również Dziękuję bardzo za udostępnienie

  9.   Ruben salgado powiedział

    Świetny artykuł, oprócz motywowania.

    1.    ChrisADR powiedział

      Bardzo miło, bardzo dziękuję 🙂 Pozdrawiam

  10.   Gonzalo martinez powiedział

    Programowanie to umiejętność rozumowania i przekładania tego rozumowania na instrukcje.

    Dwa wyjaśnienia dotyczące artykułu:

    1) Opierając się na moim prawie 10-letnim doświadczeniu nauczyciela programowania, nie ma znaczenia jakim językiem się uczysz, ale jak się uczysz i jak bardzo jest on złożony.

    Myślę, że języka, którego można się nauczyć w sposób ustrukturyzowany, a następnie przejść do innych, bardziej złożonych rzeczy, jest łatwiejsze niż rozpoczęcie od początku od języka takiego jak Java.

    Łatwiej jest nauczyć się czegoś takiego jak Hello World w C lub Pascalu jako bazy, niż z kilkoma wierszami (PROGRAM w przypadku Pascala lub #include W przypadku C) można zacząć rozwijać algorytm i zakodować program wraz z jego logiką bezpośrednio, jak w Javie, która sama w sobie potrzebuje klasy, metody i kilku innych rzeczy, które dla początkującego są niepotrzebnym nadmiarem informacji, i można to zignorować i przejść do innych rzeczy, ale są to koncepcje, które istnieją i moim zdaniem przeoczenie rzeczy nie jest dobrym sposobem na naukę, zwłaszcza jeśli język zmusza cię do ich używania. To tak, jakby po raz pierwszy rozpocząć trening strzelecki z M-16 i strzelać miesiącami w trybie półautomatycznym, trzymając uchwyt obiema rękami jak pistolet.

    2) To, czy język jest interpretowany czy kompilowany, zależy od jego implementacji, a nie od samego języka. Na przykład, jeśli używany jest język Python, dla aplikacji internetowej korzystającej z wsgi (mod_wsgi w apache lub uwsgi w przypadku Nginx), kod Pythona jest kompilowany podczas uruchamiania odpowiedniego modułu, generując pliki .pyc

    Istnieją również generatory plików binarnych dla Java (które generują natywne pliki binarne zamiast kodu bajtowego) lub kompilatory skryptów php w czystych plikach binarnych.

    Jeśli chodzi o to, co mówią o PHP, jest to po prostu język zaprojektowany w innej epoce, z myślą o innych rzeczach i bez uwzględnienia aspektów, które nie istniały w tamtym czasie. Oczywiście fakt, że jest najczęściej używany, nie czyni go najlepszym do niczego na świecie, ale istnieje rzeczywistość: jest to język, w którym jest największa szansa na znalezienie pracy we wszystkich programach. Świadomość, że to nie boli, nawet jeśli tego nie lubisz.

    Nawet ja pracowałem jako administrator systemu od kilku lat i porzuciłem pracę programisty, co jakiś czas muszę w coś wstawić kod PHP.

    1.    ChrisADR powiedział

      Cześć Gonzalo, dziękuję za udostępnienie,

      Z pewnością mówiąc o niepotrzebnych przeładowaniach informacyjnych, świadomość, że ten sam język może być zinterpretowany lub skompilowany, to coś, co na tym etapie nie jest konieczne 🙂 Na pewno implementacja jest ważna, ale jeśli mówimy, że na tym poziomie nie generujemy więcej niż zamieszanie. W ten sam sposób nie rozwiązuje się problemów związanych z programowaniem obiektowym ani innych koncepcji, które należy dozować stopniowo, aby nie przyprawiać ludzi o zawrót głowy.

      Ponieważ przestrzeń jest ograniczona, głównym celem posta jest pokazanie czytelnikom, którzy chcą programować, że istnieją dwa wielkie światy języków, że „tradycyjnie” interpretowane są bardziej „proste”, a „tradycyjnie” kompilowane są nieco bardziej „złożone”, ale warto mieć taki poziom złożoności, aby mieć solidniejsze zrozumienie i aby każdy mógł wybrać język, ponieważ w zależności od podejścia programistycznego będzie mógł wybrać swoje ulubione projekty, a jednocześnie czas, kiedy będą w stanie zrozumieć, co czytają i / lub piszą 🙂

      Jeszcze raz bardzo dziękuję, pozdrawiam.

      1.    Gonzalo martinez powiedział

        To jest błąd, nie ma języków kompilowanych ani interpretowanych, są tłumacze i kompilatory dla każdego języka, oba dla różnych przypadków.

        Wspominanie o tym teraz nie jest nadmiarem informacji, błędem jest takie stwierdzenie. Moim zdaniem byłoby bardziej produktywne zignorowanie tłumaczy, gdybyś nie chciał przeładować informacjami.

        1.    ChrisADR powiedział

          Dziękuję za wyjaśnienie, wezmę to pod uwagę, kiedy wrócę do tematu. Twoje zdrowie

  11.   Ares powiedział

    Jaki język polecasz dla serwera, biorąc pod uwagę, że php wypadł z łask?
    To samo dotyczy baz danych, nie wiem, czy będzie coś lepszego i nowocześniejszego niż mySQL.

    1.    ChrisADR powiedział

      PHP nie wypadło z łask… Każdy język ma swój cykl życia, a php z pewnością jest już językiem, który wkracza w skalę „dojrzałej”, co czyni go użytecznym na poziomie biznesowym, gdzie stabilność to przede wszystkim ... Podobnie jak niektóre banki, w których nadal jest rozwijany w Javie, który jest bardziej „dojrzały” niż php iz pewnością ma swoich zwolenników i krytyków ... Nie wspominając o COBOL-u ...

      Jeśli szukasz jednolitości i nowoczesności, javascript staje się jednym z ulubionych tak zwanych „programistów full stack”, chociaż paradygmat ruby ​​czy „prostota” Pythona są również dobrymi odniesieniami…. Nawet perl może być opcją w zależności od potrzeb 🙂

      W dzisiejszych czasach ORM (Object Relational Mappers) odgrywa dużą rolę w zarządzaniu danymi relacyjnymi. Przechodzi od składni SQL do obsługi klas i atrybutów ... Prawie wszystkie języki (jeśli nie wszystkie) obsługują niektóre ORM.

      . Mongo DB to alternatywa dla relacyjnych baz danych, która stała się dość ważna, jednak konieczne jest poznanie jego zalet i wad oraz sprawdzenie, czy będzie to najlepsze rozwiązanie w zależności od konkretnej potrzeby.

      Mam nadzieję, że ci to pomoże, pozdrawiam 🙂

      1.    Ares powiedział

        Dzięki, sprawdzę to.

      2.    Ares powiedział

        Zapomniałem.

        Co polecasz mi do pracy z JAVA w systemie Linux?
        Jeśli możesz lepiej odróżnić bezpłatne i zamknięte.

        1.    ChrisADR powiedział

          Eclipse i NetBeans są open source, nie jestem pewien, czy istnieje oprogramowanie czysto wolne, mam zwyczaj używania vima, ponieważ czasami ilość kodu powoduje, że używanie całego IDE jest wolne i podatne na błędy wykonania. Pozdrowienia 🙂

        2.    paulzeta powiedział

          Do pracy z Javą w Linuksie używam IntelliJ, polecam.

          1.    ChrisADR powiedział

            PS, IntelliJ jest oprogramowaniem zastrzeżonym 🙂

  12.   je powiedział

    Chłopaki też pamiętają, że ... Pracuję w banku i mówię wam, że języki programowania zajmują tylne miejsce, pozwalając SQL i procedurom składowanym na pierwszeństwo.

    1.    Gonzalo martinez powiedział

      Musisz wziąć je pod uwagę procedury składowane, ale nie używając przenośnego języka między silnikami, przynajmniej z mojego doświadczenia, zawsze chodzi o ich unikanie, chyba że nie ma innej opcji.