Jakie są najgorsze języki na początek nauki?

0

@jarekr000000 wstawił listę najgorszych frameworków do nauki Javy, zaznaczając, że sama Java jest dobrym językiem na początek. I zastrzegając, że można przecież trafić dużo, dużo gorzej.

TO mnie jednak ciekawi... Jakie są te złe języki na początek nauki programowania?

Spośród tych, na które ludzie rzeczywiście trafiają i od których niefortunnie zaczynają - tj. bez np brainfucka. Gdyż nie wyobrażam sobie, jak ktokolwiek w praktyce mógłby próbować od niego zaczynać.

1

C++ - zamiast uczyć się implementować funkcjonalności walczysz z segfaultami i błędami, które ciężko zdebugować

1
kmph napisał(a):

TO mnie jednak ciekawi... Jakie są te złe języki na początek nauki programowania?

Na pewno C i C++ – dla początkujących dość trudne, za dużo w nich zamieszania, dziwactw i UB.

Spośród tych, na które ludzie rzeczywiście trafiają i od których niefortunnie zaczynają - tj. bez np brainfucka.

Ezoterycznych języków nikt zdrowy psychinicznie nie bierze pod uwagę, chyba że jako ciekawostkę.

1

Mam mieszane uczucia co do C++, chociaż nie wiem jak wygląda "modern" c++ .

Według mnie więcej czasu poświęca się na zrozumienie i walkę ze samym językiem niż faktycznym pisaniem.

Chociaż niby wtedy zyskuje się większe zrozumienie "jak to działa pod spodem", więc no trudno jednoznacznie powiedzieć czy się to "opłaca".

Pamiętam, że narzekałem na to:

std::cout << "Length of array = " << (sizeof(p)/sizeof(*p)) << std::endl;
2

Ja bym dodał JS-a :D

3

Scala - trzeba ogarniać 2 paradygmaty, a większość początkujących ma z 1 problemy.

0

Hmm... z jednej strony rozumiem problemy z C... ale, z mojego doświadczenia, jak ktoś ma zerowe umiejętności w programowaniu, to UW zaczyna od C właśnie! (kiedyś zaczynali od Pascala, ale teraz przeszli na C.) (No chyba, że ostatnio znowu coś zmienili, to już nie wiem).

Tak wiem, recourse to authority itd, ale... zakładam, że UW wie co robi, najlepsza uczelnia w Polsce.

Co do C++... Znowu są niezaprzeczalne zalety, tj. multum materiałów do nauki podstaw algorytmiki, aż do możliwości startu w OIG czy OI, do czego inne języki słabo się nadają... Być może to jest powód, dla którego szkoły (gim i lic) niekiedy od C++ zaczynają?

scibi92 napisał(a):

Ja bym dodał JS-a :D

No ale właśnie! JS jest jednym z najpraktyczniejszych języków! W tym sensie, że jak ktoś chce się uczyć i móc możliwie najprędzej te umiejętności wykorzystać, to JS jest jednym z najlepszych wyborów! Trudno bez podstaw JSa postawić sobie stronkę ćwiczebną...

Moja droga: Logo => C++ nauczany w stylu kompletnie przypominającym C => OCaml na studia, z którego nic już nie pamiętam => Pascal na studia, z którego nic już nie pamiętam => Java na studia, z której cośtam jeszcze pamiętam => C++ na studia, nieco porządniej => C#+Unity3D na studia => HTML+CSS+JS+Python+Django na studia, w miarę niedawno, więc coś pamiętam (szczególnie z tej pierwszej połowy); znowu C#, tym razem z ASP.NET Core (no i HTML+CSS+JS).

0

Generalnie obecnie mamy czasy, w których królują języki wysokopoziomowe takie jak JavaScript, C#, Java i nie bez powodu programistów w tych językach wciąż przybywa. Wysokopoziomówka jest o wiele łatwiejsza, bo nie wymyślasz koła na nowo przy każdej względnie prostej funkcjonalności.

0

Brainfuck? Inne ezoteryczne języki?

Abstrahując jednak od nich i przechodząc do bardziej współczesnych, to zdecydowanie C/C++. Programowanie na niskim poziomie abstrakcji nie jest przyjazne świeżakom. Uważam jednak, iż warto je poznać, ale nie na starcie, a dopiero po jakimś pół roku nauki.

JSa bym osobiście nie polecał z tego względu, iż ciężko się z niego przenieść na inne języki typowo backendowe. Na dodatek mało wśród samych programistów JSa zna faktycznie JSa. <:

Najlepsze języki dla nowych, to według mnie Java/ Python. Poleciłbym jeszcze C#, ale środowisko, to istna kobyła.

0
kmph napisał(a):

Hmm... z jednej strony rozumiem problemy z C... ale, z mojego doświadczenia, jak ktoś ma zerowe umiejętności w programowaniu, to UW zaczyna od C właśnie! (kiedyś zaczynali od Pascala, ale teraz przeszli na C.) (No chyba, że ostatnio znowu coś zmienili, to już nie wiem).

Tak wiem, recourse to authority itd, ale... zakładam, że UW wie co robi, najlepsza uczelnia w Polsce.

Co do C++... Znowu są niezaprzeczalne zalety, tj. multum materiałów do nauki podstaw algorytmiki, aż do możliwości startu w OIG czy OI, do czego inne języki słabo się nadają... Być może to jest powód, dla którego szkoły (gim i lic) niekiedy od C++ zaczynają?

Jak kończyłem studia na UJ (2010/2011 rok) to dla świeżaków wchodziły Java kursy zamiast tłuczenia do oporu C i Pascala.

0
Wibowit napisał(a):

Jak kończyłem studia na UJ (2010/2011 rok) to dla świeżaków wchodziły Java kursy zamiast tłuczenia do oporu C i Pascala.

UWr znowuz daje wybor miedzy Pythonem a C

1

Wszyscy piszą o Javie, czasem coś o C#.

Ale. Mimo to może oprócz zalet, te dwa języki mają również wady?

Przede wszystkim to, że oba są bardzo nastawione na OOP. Tymczasem ogarnięcie OOP wymaga ogarniania paradygmatu proceduralnego / strukturalnego.

Nie za bardzo widzę, jak można bezboleśnie uczyć Javy czy C# od podstaw inaczej, niż ignorując obiektowość (przynajmniej przez pierwsze pół roku). A skoro tak, to czemu od razu nie zacząć od języka proceduralnego, zamiast pisać Pascalopodobny kod w Javie?

Ale może się mylę, może można od razu zaczynać od obiektowości.

2

PHP - język koszmarny, jeden wielki chaos, niespójny, taki pidżin (każda funkcja czy element składni wzięty bezładnie z innego języka).

Java - zbyt przeinżynierowany jak na język dla początkującego. Przez to nawet Hello World będziesz musiał pisać na klasach. Czyli to paradoks, bo będziesz musiał używać klas zanim się nauczyć obiektówki. Czyli będziesz pisać proceduralnie na klasach.

co do JavaScript to mam mieszane odczucia. Z jednej strony sam język nie jest przychylny dla początkującego (za dużo niespodzianek), z drugiej strony fakt, że można w tym pisać aplikacje czy stronę i od razu nimi się dzielić ze światem wrzucając do netu (i ktoś będzie mógł je zobaczyć bez ściągania żadnego exeka czy apki ze store'a) i że można łatwo animacje robić (więc dużo frajdy). I fakt, że teraz JS jest na fali (i masę bibliotek jest, narzędzi itp.).

Czyli niby sam JS pewnie nie jest najlepszy dla początkującego, bo może wprowadzić dużo zamieszania w głowie (np. w JS jest ileś sposobów na zdefiniowanie własnej funkcji i każdy sposób się różni czymś), ale z drugiej ekosystem jest silny (ale pewnie można tak o wielu językach powiedzieć).

0

a co sądzicie o VB ?? za bardzo nie znam... ale znam całkiem nieźle VBA pod Excela... to chyba podobne ciut ??

0

czyli JS nie jest dobry ale nie jest tez zly

1

Java - zbyt przeinżynierowany jak na język dla początkującego. Przez to nawet Hello World będziesz musiał pisać na klasach. Czyli to paradoks, bo będziesz musiał używać klas zanim się nauczyć obiektówki. Czyli będziesz pisać proceduralnie na klasach.

Ja (w gimnazjum jeszcze) po zrobieniu MessageBoxa (alerta) w JavaScripcie zająłem się robieniem MessageBoxa w czystym asemblerze za pomocą kursu Iczeliona: http://win32assembly.programminghorizon.com/tutorials.html
Było cholernie ciężko bo nie rozumiałem nic, nawet brak obiektówki w asemblerze nie pomógł. Ale przebrnąłem przez parę kursów i byłem mistrzem asemblera x86 :]

Mój pierwszy styk z Javą na studiach był dość nieprzyjemny, bo dość długo nie mogłem zrozumieć dlaczego nie mogę wywołać niestatycznej metody z maina i jakie mechanizmy za tym stoją. Komunikat błędu od kompilatora Javy nie był wystarczająco przejrzysty dla nowicjusza.

2

Ja zaczynałem od Javy i jakbym miał wybierać jeszcze raz to bym poszedł tą samą drogą :) Było trudno, jak chłopaki wyżej pisali: tworzyłem strukturalne programy w metodzie main nie mając pojęcia jak stosować OOP. Potem zacząłem rozbijać te strukturalne potworki na mniejsze klasy i tak po sznureczku sobie szedłem. Teraz uważam, że moją 'specjalnością' jest między innymi czysty kod, OOP i wzorce projektowe.

Znam tylko Javę i trochę Pythona, ale jak widzę PHP to od razu mam ochotę spie***lać od komputera, takie to brzydkie rzygowiny bez składne.

0

Sprostowania:

  1. nieprawdą jest że Java wymaga OOP. Każdy programista "enterprise" mający doświadczenie z "bezstanowymi serwisami" i "utilsami" to wie [*].

Przykład:

class Ideone
{
	static { 
            System.out.println("Hello world!"); 
        }

        // nic nie robiący kod wymagany do załadowania w Ideone	
	public static void main (String[] args) throws java.lang.Exception	{ }
}

https://ideone.com/XriiXp

Jeśli ktoś tęskni za 100% programowaniem proceduralnym na JVM to jest przecież Kotlin.
https://stonesoupprogramming.com/2017/10/14/kotlin-encapsulation-and-procedural-programming/

  1. Nie zgodzę się że ten język jest przeinżynierowany. Ktoś kto tak mówi nigdy chyba nie robił w C++/TMP.

  2. Z C++ nigdy nie miałem problemów. Wcześniej było C, więc może to kwestia nastawienia. Najpierw było oczywiste że ze wskaźnikiem trzeba coś zrobić, potem przyszły smart pointery i już nie trzeba było się zastanawiać. W obecnej wersji (C++17/20) ten język robi się coraz bardziej przyjemny. Patrz lambdy, std::function, string_view...

**Najgorsze języki **
wg mnie do nauki programowania:

  • COBOL (bez OOP) - nie ma jednej rzeczy której ten język dobrze uczy
  • PHP - przez bałaganiarskość biblioteki standardowej
  • C - przez chorą składnię wskaźników do funkcji (w porównaniu choćby do Turbo Pascala z lat 90-tych) oraz obsługę łańcuchów tekstowych
  • JavaScript w wersji sprzed ECMAScript 6. Ogólnie to fajny język, ale dla mnie na dzień dzisiejszy trzeba naprawdę mieć poważny powód żeby stosować starszą wersję.

[*] "utilsy" to takie statyczne moduły proceduralne udające klasy.

0

Pewnie większość się nie zgodzi ale najgorszy i najbardziej irytujący język to Python... Co do PHP i JS(w nowej wersji) uważam że ich krytyka jest przesadzona... Założę się, że gdyby taki PHP pojawił się w dzisiejszych czasach i był mniej popularny to ludzie zachwycaliby się jego niesamowitymi możliwościami i pisali, na forach że łączy programowanie obiektowe i funkcyjne i w ogóle jest hot...

0

Mimo, że smakowałem wiele języków, nadal wolę C++. Być może to jakieś zboczenie, bo rzeczywiście czasami są śmieszne sytuacje jak taka:

const double *(*(*pA)[3])(const double *, int) = &pB;

Lecz to już jest raczej przeszłość, takie babole są rzadkością. Z resztą coraz to nowsze wersje cpp mają przydatne dla programisty funkcjonalności i nie jest aż tak źle jak wszyscy mówią. Uważam, że c++ jest fajny na spróbowanie, bo później przesiadka na inne języki jest błahostką.

0

Moja lista:

  1. C i C++ bo brzydkie funkcje i samemu trzeba większość pisać
  2. Kotlin bo wymaga znajomości Javy
  3. C# i Java bo obiektówka i długie nazwy metod i klas
  4. JavaScript bo wymaga zrozumienia GUI i zdarzeń

1 użytkowników online, w tym zalogowanych: 0, gości: 1