Archief - goede programmeertaal om mee te beginnen ?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

KeaTs

Legacy Member
Kunt ge in Java geen == operator implementeren die strings vergelijkt of wa? Hoe zit het dan, test hij altijd de references en moet je een functie gebruiken om te vergelijken? :o

killgore

Legacy Member
KeaTs zei:
Kunt ge in Java geen == operator implementeren die strings vergelijkt of wa? Hoe zit het dan, test hij altijd de references en moet je een functie gebruiken om te vergelijken? :o

functie ja :(. string.equals(andereString);

Dat is echt zowat het ergste gebrek imho in java, geen operator overloading.

killgore

Legacy Member
Cyc1oon zei:
Je hoeft toch helemaal geen pointers te gebruiken in c++ als beginner. Een simpel getalleke toewijzen aan int en die int overal gebruiken waar je zin hebt heeft niks met pointers te maken. Zo kan je ook klagen over de references die Java gebruikt. Maak maar eens aan een beginner wijs waarom je 2 strings niet mag vergelijken met == in Java en een simpele int wel. Of leg maar eens aan beginner uit hoe een String eigenlijk werkt in Java. In c++ valt dat nog wel uit te leggen als je over c-strings gaat praten.

Ik ken tbh geen enkele deftige C++-tutorial die pointers achterwege gaat laten hoor. Voor belangrijke oo concepten als polyformisme zijn ze trouwens vereist in c++ ;-).

Ook bv. het hele header/source file systeem is mssch neit zo heel moeilijk, maar maakt het toch weer een klein beetje lomper/lastiger t.o.v. java/C#. Het zijn gewoon al deze dingen die C++ lastiger maken als beginnerstaal.

Cyc1oon zei:
Maar er is eigenlijk gewoon geen "beste" taal om mee te starten. Ze hebben allemaal wel iets specifiek dat je als beginner moet aanleren of negeren. En pointers zijn an sich zijn eigenlijk niet zo heel erg lastig te interpreteren (als 13-14 jarige kan dat wel iets anders zijn natuurlijk :p).
Ik denk niet dat de leeftijd er iets toe doet, wel eerder het feit dat ik dan eigenlijk nog geen zak kende van hoe een pc juist werkte, en dan zijn zo low-lev concepten als pointers nogal moeilijk.

Volgens mij ben je beter met java/c# (imho c#) en dan eventueel later over te schakelen naar C++, als je het hele concept al wat gewoon bent.

Krueger zei:
Nog een geluk dat de topicstarter een eenduidig antwoord op zijn vraag heeft gekregen ;)

Nogal een geluk dat dit een zeer eenduidige vraag is.

Tyfius

Legacy Member
C# heeft dat wel. :)

Nu, ik heb dat al een aantal keer gezegd. Niets tegen C++, ik werk daar ook mee (en C ook trouwens), maar met C# maak je als beginner sneller een GUI applicatie dan met eender welke andere hier vermelde taal en de beginselen zijn in C# hetzelfde als in C++. Als je echt wil programmeren en later veel verschillende dingen wil/moet doen kan je best eens naar C++ kijken, maar voor iemand die nu begint en wil leren programmeren om te zien wat dat nu uiteindelijk is, is C# de beste en snelste keuze om resultaat te hebben.

edit: Eigenlijk wou ik ongeveer hetzelfde zeggen als killgore, maar die was weer rapper en vind ik, puur procedureel gezien C toffer en handiger dan C++.

MilM

Legacy Member
KeaTs zei:
Kunt ge in Java geen == operator implementeren die strings vergelijkt of wa? Hoe zit het dan, test hij altijd de references en moet je een functie gebruiken om te vergelijken? :o

Idd:

String a = "test";
String b = a;

a == b => true

____

String a = "test";
String b = "test";

a == b => false
Krueger zei:
Nog een geluk dat de topicstarter een eenduidig antwoord op zijn vraag heeft gekregen ;)
Hij heeft een eenduidig antwoord gekregen => "Java" of "C#"
Overloop de antwoorden maar eens ;)

Enkel Cyc1oon heeft iets anders aangeraden (C++) wat zijn goed recht is natuurlijk. (Iemand kan de éne taal als gemakkelijker aanvoelen dan iemand anders)

KeaTs

Legacy Member
ouch, pijnlijk, geen operator overloading :) Hebben ze daar goeie argumenten voor om dat niet te hebben?

Cycloon

Legacy Member
killgore zei:
Ik ken tbh geen enkele deftige C++-tutorial die pointers achterwege gaat laten hoor. Voor belangrijke oo concepten als polyformisme zijn ze trouwens vereist in c++ ;-).

Maarja, welke beginner gaat binnen het eerste jaar in aanraking (willen) komen met zaken als polymorfisme en dynamische binding? Laat staan dat hij het eerste jaar al op een degelijke manier met objecten zal omspringen. Het kan best aan mij liggen maar wat jullie blijkbaar als beginner aanzien zie ik al meer als iemand die gevorderd is en echt nieuwe zaken wil leren.

killgore

Legacy Member
KeaTs zei:
ouch, pijnlijk, geen operator overloading :) Hebben ze daar goeie argumenten voor om dat niet te hebben?

Omdat het volgens hen lastig is in combinatie met overerving ...

Moto

Legacy Member
polymorfisme is toch basic stuff heh ;) als ge dat niet in uw eerste jaar ziet is het wel erg

Moeilijkste aan OO is weten wanneer ge wat gebruikt qua patterns ed.
Zodat ge niet aan het overdesignen of onderdesignen zijt :)
En dat is enkel ervaring en inzicht

Cycloon

Legacy Member
Moto zei:
polymorfisme is toch basic stuff heh ;) als ge dat niet in uw eerste jaar ziet is het wel erg

Op school misschien wel, als zelfstudie: zeker niet (of je moet echt gedreven zijn om binnen x aantal jaar een volwaardig programmeur te worden). Hier gaat het volgens mij echt om iemand die eens wil kennis maken met programmeren. Ik heb trouwens polymorfisme maar gezien in het 2de jaar industrieel ingenieur informatica (mja dat komt deels omdat het eerste anderhalve jaar geen echte specifieke informatica opleiding is).

Ik moet alleszins nog de eerste persoon tegenkomen die met zelfstudie na een jaar handig gebruik maakt van polymorfisme ;)

Daedie

Legacy Member
Ben persoonlijk ook geen voorstander om direct in contact te komen met OO bij het leren van de eerste programmeertaal. Dat doen ze in leuven bij de burgies ook en bijna niemand snapte daar toen een hol van, projecten werden meestal gemaakt door zo gasten die al programmeren van toen ze 12 waren ofzo en de rest modderde wat aan. Slechte aanpak.

In Uhasselt (informatica) leren ze eerst procedureel java (kwestie van pointers uit te stellen) en kort daarna C. Dan C++/java in 1 cursus (eerst C++ en dan de OO concepten ook kort ff tonen in java) . En dat vond ik een zeer natuurlijke en vlotte manier om te leren programmeren.

killgore

Legacy Member
Bij ons beginnen ze inderdaad ook met procedureel java (dus gewoon statische methoden) om alle basis programmeerconcepten uit te leggen. Is imho nog het beste van al. Zo werken de meeste boeken wel (in mijn ervaring).

Eens alle punten wrom geen C++ als beginner Cyc1oon ;-):
geen inherente booleans, alles valt terug op numeriek systeem.
.cpp/.h systeem
Geen uitgebreide basisbibliotheken en extra bibliotheken zijn niet altijd evenvoudig toe te voegen voor beginners.
Zowat elke tutorial gaat vrij snel pointers erbij nemen en dat is een complex iets voor beginners.

Allemaal doorgaans niet de zwaarste zaken van allemaal, maar het zijn kleine lastige dingen die het voor de beginner moeilijker maken.
Java is beperkt, simpel en heeft met J2SE een uitgebreide standaardbibliotheek die C++ niet heeft.

edit: en ik ben C++ fan hoor :-)

Cycloon

Legacy Member
killgore zei:
geen inherente booleans, alles valt terug op numeriek systeem.
.cpp/.h systeem
Geen uitgebreide basisbibliotheken en extra bibliotheken zijn niet altijd evenvoudig toe te voegen voor beginners.
Zowat elke tutorial gaat vrij snel pointers erbij nemen en dat is een complex iets voor beginners.

De eerste 2 punten vinden ik maar zwak. Dat booleans in c++ niks anders zijn dan 1 of 0 maakt voor een beginner niet uit lijkt mij. Ik zie het verschil niet tussen 1/true of 0/false, het principe van booleans blijft hetzelfde. Het systeem van .cpp en .h bestanden is mss iets onhandig maar je bent niet verplicht om deze te gebruiken als beginner en zeker niet zolang je proceduraal blijft programmeren. Vanaf je naar OOP overstapt dan ben ik eigenlijk wel een voorstander van Java omdat het daar allemaal wel een stukje makkelijker gaat.

Dat de standaard bibliotheken niet uitgebreid zijn in C++ daar geef ik je volledig gelijk in (maar wederom zoals ik hiervoor al zei, voor een beginner kan het net positief zijn om bepaalde standaard zaken zelf eens te maken).

Dat de meeste tutorials er snel pointers bijgooien is op zich mss eerder een probleem van de tutorials dan van de taal. Je hebt echt geen pointers nodig om de basis van het programmeren te leren. Ik heb tijdens de eerste lessen informatica in C++ ook nooit een pointer gezien.

Maar goed, ik denk dat de meeste voor- en nadelen ondertussen wel besproken zijn en dat blijkbaar toch veel mensen Java of C# zouden aanraden aan beginners. Ik denk dat de TS nu zelf wel kan uitmaken voor zichzelf met welke taal hij wil starten en als een taal hem toch onverstaanbaar lijkt nu ook weet hoe het er bij andere talen aan toe gaat en dus voor bepaalde problemen die hij tegenkomt zou kunnen veranderen van taal.

Tyfius

Legacy Member
Inderdaad, bij mij geeft dat anders ook wel TRUE.

Het is al lang geleden dat ik nog met Java heb gewerkt, maar ik dacht dat alleen de String klasse over operator overloading beschikte. "1" + "2" zou die dan intern vertalen als new StringBuilder("1").append("2");

killgore

Legacy Member
janee, dat heeft bij mijn weten te maken met dat strings immutable zijn en uw compiler 2 objecten die toch dezelfde inhoud hebben gewoon naar hetzelfde zal laten wijzen.

Deze code bijvoorbeeld zal false geven ;-):
Code:
		String a = "te";
		String b = "st";
		String c = "test";
		String d = a+b;
		System.out.println(c==d);

Er zit dus wel overloading in die + zoals je zegt, == is niet overloaded ;-).

edit: die overloading van + is wel puur compilerafhankelijk eigenlijk (zoals generics bv.), in de bytecode is dit mooi een functiecall, java bevat an sich geen operator overloading, net zoals java an sich geen generics bevat. Dat zijn compiler tools (en meta-data) die je niet terugvindt in de bytecode.

Jerre Muesli

Legacy Member
COBOL !! COBOL !!

Nee, C# of Java lijkt me de logische keuze. Hoewel PHP ook goed is om mee te beginnen aangezien je hier ook OO mee kan programmeren

wyvernshill

Legacy Member
Allemaal toch erg bedankt voor de vele reacties, het is inderdaad geen kant en klare vraag. En natuurlijk zal dit altijd hevige disputen uitlokken (hoewel dit hier gelukkig niet het geval is ! Chapeau :D).

Ik denk dat ik zoals de meesten suggereerden (hoop dat het niet erg is Cyc1oon) zal beginnen met Java en wat C#, als dit me niet bevalt tjah dan ben ik natuurlijk ook niet gemaakt om te programmeren :S

Is er een handleiding voor Java of C# die je fel zou aanbevelen ? (liefst internationaal zodat ik die ook "ergens" kan vinden ?)

Cycloon

Legacy Member
wyvernshill zei:
Ik denk dat ik zoals de meesten suggereerden (hoop dat het niet erg is Cyc1oon) zal beginnen met Java en wat C#, als dit me niet bevalt tjah dan ben ik natuurlijk ook niet gemaakt om te programmeren :S

Kweet nie waarom ik dat erg zou moeten vinden :p

Geef trouwens niet te snel op, programmeren is maar iets raar om mee te beginnen :p Soms kan het best zijn om af en toe eens iets te proberen en niet te fel op bepaalde zaken te focussen in het begin. Je moet bv de eerste weken niet verwachten dat je GUIs zal kunnen programmeren zonder problemen, ga dat dan ook niet proberen :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan