Pod pewnym względem zgadzam się z tym, że nauka programowania w już bardzo “starym” i nie używanym języku może być mało przydatna, tutaj można wymienić PASCALA do dzisiaj nie za bardzo rozumiem sensu nauki tego języka programowania w większym stopniu, jak pętle sterujące oraz procedury i funkcje lub wcale nie uczyć się tego języka programowania. Pascal to teoretycznie środowisko, które jest przeznaczone do nauki programowania, jednak moim zdaniem zamiast Pascala śmiało można zacząć od C.
Jasne. Nikt nie twierdzi, że przez dwa lata zmieniło się wszystko (C, C++ na przykład trzymają się nieźle). Ale ze względu na to, że coś się mogło jednak zmienić lepiej profilaktycznie nie odsyłać ludzi do wątków sprzed kilku lat. A teoria, że na początku nauki można wybrać właściwie cokolwiek (byle miało zmienne, pętle, operatory logiczne itp.) jest błędna i, co gorsza, szkodliwa.
MSB czy Pascal to akurat jeden paradygmat, zresztą JS też jest w dużej mierze imperatywny. Ale jest również funkcyjny i obiektowy, co gorsza z dziedziczeniem opartym na prototypach. Domknięcia są tematem raczej trudnym dla początkujących, kilkanaście możliwości dziedziczenia to komplikacja, a najgorsze dla początkującego jest to, że ten język jest słabo typowany.
No, zwłaszcza w asemblerach i Haskellu.
Na przykład na szeroko stosowanym Microsoft Small Basic.
C jest wystarczająco praktyczne i nieprzestarzałe, aby od niego zacząć.
Serio? Jakie niby?
Twoim (bz)durnym argumentem opisującym to, co się zmieniło było:
Powtórzę, bo widocznie nie zrozumiałeś - nowe platformy mobilne czy języki WWW to zagadnienia dla osób, które mają podstawy i potrafią na tyle programować, aby szukać dla siebie jakiejś niszy czy specjalizacji.
Początkujący muszą poznać programistyczne abecadło, a ono się nie zmieniło. Początkujący musi najpierw posortować bąbelkowo liczby pierwsze w konsoli, zanim napisze swoją pierwszą obiektową latarkę na Androida, wyklika sklep internetowy w ASP.NET albo menadżer plików w C++ Builder. Bo jeśli odwróci kolejność, to stworzy gniota, którego działania nie zrozumie, a próba zrobienia czegoś, czego IDE nie udostępnia będzie się wiązała z frustracją i zawracaniem głowy na forach internetowych.
Skrótowo, bo już chyba nikt poza nami tego nie czyta:
Poleciłbyś początkującemu Assembler albo Haskela? MSB jest nowoczesnym językiem dla początkujących (naprawdę uważasz, że nie ma między nim i Pascalem żadnej różnicy?). Argument o szerokim stosowaniu dotyczył JavaScript.
No niech już będzie, że musi. Tyle tylko, że i tak istnieje gigantyczna różnica pomiędzy tym czy będzie to konsola w Basicu, Pascalu, Perlu czy też w C albo Javie.
– Dodane 10.09.2011 (So) 22:48 –
I jeszcze jedno - z własnego (i innych osób, z którymi utrzymywałem/utrzymuję kontakt) doświadczenia wiem, że po doświadczeniach np z Basiciem na C64, potem Assemblerem na C64, potem Assemblerem i Pascalem na innych platformach, przesiadka na programowanie obiektowe była bardzo ciężka. I nie chodzi mi nawet o fakt zrozumienia nowego typu programowania, tylko o odczucie, że jest ono nieprzyjemne, obce, nie-moje (coś jak mowa w obcym języku). Zresztą tyczy się to także np. przesiadki na języki, w których stosuje się klamry - np. z Pascala na C. Obcowanie z kodem jest o wiele bardziej męczące, mniej przyjemne i wydajne. Nawet jeśli chodzi tylko o konsolowy program liczący liczby pierwsze. Oczywiście, możesz teraz napisać, że to ja i osoby, z którymi dzielę to doświadczenie jesteśmy taaaacy głupi, a innym to pójdzie jak pstryknięcie palcami, ale radziłbym się przed tym zastanowić raz jeszcze, bo może sprawa nie jest wcale taka prosta.
Nie. Zwróciłem Ci tylko uwagę, że nie w każdym języku występują wymienione przez Ciebie instrukcje, ot co.
Ma ładniejsze IDE. Ogólnie wygląda fajnie, można się nauczyć podstaw tak jak w Pascalu, ale podobnie jak w Pascalu gorzej niż w C (bo nie trzeba rozumieć działań na pamięci). Tylko to nie obala mojej tezy o tym, czego początkujący musi się nauczyć.
JavaScript jest szeroko stosowany… głównie przez laików, bez zrozumienia, a przez to błędnie.
Nie dziwię się. Wiesz jak ciężka jest przesiadka na programowanie obiektowe programistów C++?
I z tego powodu równie męcząca i nieprzyjemna może być przesiadka z MSB na coś używanego profesjonalnie. Tylko dlatego nie jestem przekonany do tego wynalazku.
No mogę, ale ja tak nie robię i trochę nie rozumiem tego zarzutu. Jest taki jakiś niezbyt poważny…
Różnica między nami polega na tym, że Ty myślisz zero-jedynkowo i widzisz same skrajności, a ja staram się dostrzegać odcienie szarości. Nawet jeśli przesiadka z C++ na języki w pełni obiektowe będzie ciężka, to i tak będzie przyjemniejsza niż przesiadka na te języki z Pascala. Podobnie ma się sprawa w przypadku MSB i Pascala. JavaScript używana głównie przez laików? Niech będzie. A przez kogo jest używany Pascal? Przez elitę programistyczną tego świata? Różnica pomiędzy JavaScript a Pascalem polega na tym, że pierwszy jest stosowany szeroko także przez profesjonalistów, a drugi nie, bo jest językiem martwym, którego nikt poważny już dziś nie poleca.
Tak, biorąc pod uwagę jakość większości napisanego w niej kodu (podobnie jest z PHP).
Głównie to chyba do nauczania programowania i algorytmów w szkołach średnich i na niektórych uczelniach.
Jest jeszcze jedna różnica - słabe typowanie, które jest szkodliwe dla początkujących. Gdy ktoś się do niego przyzwyczai za bardzo, to potem nie jest w stanie zrozumieć typizacji zmiennych i reszta języków jest dla niego “za trudna”.
No i co z tego, że większość kodu jest pisana przez laików? Ważne jest to, że oprócz tego język ten jest szeroko stosowany przez zawodowców w poważnych projektach.
No to super. Do nauki stosuje się język, który nie ma żadnych innych zastosowań. Rewelacja. Przy okazji - możesz podać adresy tych szkół i (przede wszystkim) uczelni? Ludzie będą mogli dzięki temu omijać je wielkim łukiem, a Twoje wypowiedzi na coś się ostatecznie przydadzą. To jest tragedia jeśli na uczelniach wyższych wciąż się katuje Pascala. Niestety, kiepski poziom informatyki w szkolnictwie w Polsce jest faktem poruszanym wielokrotnie na różnych forach. Na Zachodzie już dawno zapomniano o Pascalu, a ostatnie publikacje na jego temat to początek stulecia.
Sorry, ale jak można nie zrozumieć typizacji zmiennych? Typowania się nie zrozumie, za to obiektowość pójdzie jak bułeczka z masłem.
A to jakiś kontrargument? Kreda i tablica też nie mają innych zastosowań. Trzeba je wycofać ze szkół.
Na Politechnice Poznańskiej tak jest.
W ogóle żeś się przykleił do tego Pascala niesamowicie. Nigdy nikomu go do nauki nie polecałem.
Pytaj tych, którzy nie rozumieją.
To do mnie czy do kogo czy tak rzucone na wiatr?
Każdy powiedział, co miał powiedzieć i nie ma sensu tego powtarzać po raz setny. Nie zależy mi na tym, żeby Ciebie przekonać. Chciałbym, żeby inni wzięli pod uwagę to, co piszę. A ponieważ nie sądzę, aby ktokolwiek śledził jeszcze ten wątek, więc z mojej strony kontynuacji nie będzie (to samo dotyczy drugiego naszego sporu w tym dziale).
@up: błąd, ja śledzę dość uważnie oba.
Wymigiwanie się od dyskusji “bo nikt jej nie śledzi” to dość trollowe zachowanie.
Tak z ciekawości - z kim jesteś skłonny się bardziej zgodzić?
A ja myślę, że to właśnie ciągnięcie dyskusji na zasadzie “nie odpuszczę, muszę mieć ostatnie słowo, a ostatnia riposta musi być moja” i mielenie w kółko tego samego innymi słowami zasługuje raczej na miano trollowania. Taka przepychanka we dwoje jest trochę jak fraktal - powiększasz detal i okazuje się, że jest on identyczny jak większy fragment, którego był częścią. I tak w kółko. Podobnie w takiej dyskusji. Padają tezy, zaczynasz szczegółowo argumentować i dochodzisz do wniosków, które okazują się takie same jak podane wcześniej tezy, którym służyła owa szczegółowa argumentacja. No i znowu zaczynasz argumentować te same tezy. Kółeczko się zamyka i tak można bez końca. Tylko po co?
Bardziej z somekindem, ale też niecałkowicie. Co nie zmienia faktu, że preferowałbym pozostać neutralnym w tej dyskusji.
Czy ja wiem, czy nie ma sensu? Zaczęły się pojawiać rzeczowe argumenty(bo nie ukrywam, że na początku zalatywało mi to lekką przepychanką słowną nieprowadzącą do niczego), oboje uparcie bronicie swoich racji i dopóki nie pojawi się argument ad Hitlerum(lub podobny), lub dyskusja nie umrze śmiercią naturalną - warto ją prowadzić.
Ciekawie się zrobiło, temat zacząłem dawno, teraz muszę odświeżyć, po co zaczynać nowy skoro tutaj jest ciekawa dyskusja.
Tylko teraz pytanie, jaki język na początek? HTML umiem, własną, prostą stronę internetową zrobię, nic poza tym.
Dyskusja toczy się o Pascalu, JS, C(?) i C++(?), jednak ja jako laik nie wiem co wybrać, nie wiem co dla mnie może być najlepsze.
HTML to nie jest język programowania.
C++ jest dobry na początek, jeśli chcesz mieć pojęcie o architekturze komputerów. Jeśli nie - Java/C# może Python.
Czysty HTML to tyle co nic. Jeżeli chciałbyś móc z czystym sumieniem powiedzieć “Umiem robić strony internetowe”, dorzuć do tego CSS.
Gdyby interesowało cię programowanie, to IMO:
C++, jeżeli interesuje cię hobbistyczne dłubanie w skomplikowanym kodzie
Python, jeżeli interesuje cię hobbistyczne dłubanie w prostszym kodzie
C#/Java, jeżeli chcesz zarabiać jako korporacyjny programista
PHP, jeżeli chcesz hobbistycznie/zarobkowo tworzyć nieco bardziej zaawansowane strony internetowe
Dlaczego od razu korporacyjny?
Bardziej niż w C#/Javie?
@up
IMHO ostatnie zdanie wyrwane z kontekstu i nie jest stwierdzeniem, że PHP oferuje większe możliwości.
Moim zdaniem cokolwiek wybierzesz będzie na początek w porządku. Najważniejsze byś umiał tworzyć algorytmy, potem sam dojdziesz do punktu w którym uznasz, że język X jest lepszy od Y dla aplikacji webowych, a język Z jest lepszy od X jeśli chcemy pisać coś rozproszonego na wiele procesorów.
Skrót myślowy i uproszczenie. Z perspektywy Javy wygląda to tak, że można znaleźć setki ogłoszeń o miejscach dla programistów Javy Enterprise Edition - często tłumaczonej jako Java korporacyjna. Nie łączy się to bezpośrednio z miejscem pracy, ale oznacza, że będzie się dłubało nie w kontrolkach Swinga czy AWT, tylko w niższych lub wyższych warstwach jakiegoś większego systemu, zapewne będącego aplikacją webową. Przez wspomniane uproszczenie odniosłem to również do C#.
Bardziej niż w HTML-u.