Myślę, że „język skryptowy” to okropne słowo, które jest bardzo nieaktualne lub w najlepszym wypadku pasuje do klasy języków specyficznych dla domeny. Twój nauczyciel po prostu dopasowuje wszystko, o czym wyraźnie nie ma wystarczającego zrozumienia, do osi zła.
Rozsądnym rozróżnieniem jest między językami wysokiego poziomu a językami niskiego poziomu lub między statycznymi i dynamicznymi typami języków, które są naprawdę ortogonalne.
Asembler jest dynamicznie typowany na niskim poziomie (jeśli mówienie o typach ma w ogóle sens), C jest statycznie typowany na niskim poziomie, Ruby jest dynamicznie typowany na wysokim poziomie, Haskell jest typowany na wysokim poziomie. Java nie jest statycznie typowana na wysokim, ani na niskim poziomie, C ++ jest statycznie typowana na wysokim i niskim poziomie. I tak dalej.
Dyskusja może dotyczyć tylko tego, które paradygmaty są bardziej odpowiednie dla programisty na poziomie podstawowym.
Jestem przekonany, że programowanie na niskim poziomie prawdopodobnie nie jest jednym. Być może kiedyś na początku lat 90. można było uzyskać interesujące wyniki w rozsądnym czasie.
Ale programowanie napędzane jest pasją. Namiętność karmi się nagrodami. Dlatego programiści na poziomie podstawowym powinni zacząć od narzędzi do wynagradzania. Narzędzia niskiego poziomu nie są już satysfakcjonujące, ponieważ istnieje ogromne morze narzędzi wysokiego poziomu, które zapewniają ten sam rezultat w ułamku czasu.
Ludzkie myślenie jest abstrakcyjne. Kiedy uczymy się rozumieć świat, robimy to poprzez bardzo gruboziarniste abstrakcje i w miarę potrzeb wchodzimy w szczegóły.
Aby dziecko zrozumiało swoje otoczenie, nie nauczysz go matematyki, fizyki, chemii, biologii, historii, socjologii i filozofii. Dajesz mu bardzo prosty model świata, z którym sobie poradzisz, i sam z siebie długo będzie chciał go przekroczyć, bez końca zadając ci pytania, gdy jesteś młody, a później całkowicie negując swój autorytet.
Tak myślimy. Ludzki mózg może przetwarzać jedynie ograniczone ilości „jednostek” informacji, ale stopień abstrakcyjności nie ma większego znaczenia przy kwantyzacji informacji. Na przykład: odczytanie wyrażenia „34 * 75” jest dla nas prostsze niż jego obliczenie, podczas gdy w przypadku komputerów jest odwrotnie. Rozpoznanie (a tym samym streszczenie) wiązki czarnych pikseli w krętą linię, którą następnie można rozpoznać (a tym samym po raz kolejny wyodrębnić) jako pojedynczą cyfrę, jest ogromnym nakładem pracy.
Moja babcia rozumie pomysł otwarcia pliku. Jednak nie ma zrozumienia poniżej tego poziomu. I szczerze mówiąc, gdyby musiała się tego nauczyć, najpierw badając wewnętrzne działanie sprzętu i systemu operacyjnego, a co nie, nigdy by się tam nie dostała.
Jest wielu ludzi, którzy nadmiernie komplikują rzeczy, ponieważ nigdy nie nauczyli się myśleć w kategoriach jasnych, zwięzłych, a tym samym eleganckich rozwiązań, ale spędzali zbyt dużo czasu na zadręczaniu się wymiennymi szczegółami niskiego poziomu i rozwiązywaniu problemów z nimi. Uczenie ludzi myślenia jak komputer jest najgorszym możliwym podejściem do programowania.
Wartość programowania polega na znalezieniu rozwiązania problemu. Wyrażanie go jako kodu jest bardziej nudnym, mechanicznym zadaniem i powinno być po prostu wykonane przy użyciu odpowiednich narzędzi.
Och, i nie martw się, że nie zrozumiałeś wskaźników. Miałem mniej więcej ten sam problem w tym samym wieku. Problemem jest także brak abstrakcji. Klasycznie dowiadujesz się o wskaźnikach z jakiejś książki C i gdy próbujesz je zrozumieć, idzie to w parze z alokacją pamięci, a więc z pamięcią stosu i sterty i tak dalej. Abstrakcyjną koncepcją wskaźników jest pośrednictwo. Zmienna, która przechowuje indeks w określonej tablicy, jest po prostu (w rzeczywistości jest taka sama w C, gdzie konkretna tablica jest twoją przestrzenią adresową) i do tego nie potrzebujesz arytmetyki wskaźnika.
Ma to jedynie zilustrować, że wybór wysokiego poziomu abstrakcji znacznie ułatwia zrozumienie.
EDYCJA: a jeśli chodzi o pisanie, wolę języki pisane statycznie. I myślę, że programiści na poziomie podstawowym powinni jasno zrozumieć pojęcie typów (które jest abstrakcyjne).