![]() |
programmeren in linux
hallo, ik wil beginnen met programmeren in linux(ik heb geen widows systeem dus...) welke programeertaal raden jullie mij aan om mee te beginnen, en welk boek eventueel(ik heb op de site van de bieb gekeken, maar zag niet echt iets... komt vast omdat ik nog niet weet welke taal :D)
bij voorbaat dank ps. ik weet dat er al veel topics zijn geweest, maar de laatste is vrij oud, en er zijn er geen specifiek over linux, als het toch niet mag, sorrie... |
programmeren in linux VOOR linux
of programmeren in linux VOOR windows |
C, C++, Java...
Meer weet ik ff niet uit m'n hoofd. |
programeren in linux voor linux, ik wil mijn eigen progjes kunnen gebruiken en testen...
|
ehm. ja.
Programmeren, marino, is lastig. Om niet te zeggen moeilijk. Maar wel heel leuk :) Als je cross-platform programma's wil maken, kun je bijvoorbeeld C gebruiken, of C++ (prefereer zelf C, schoner). Als je bereid bent een obscure taal te leren, kan ik D aanraden (krachtig als C++, maar schoon als C). Of objective-c, maar om daar wat zinnigs mee te doen heb je gnustep nodig. Maar er zijn nog veel meer talen dan dat, en een linux installatie komt vaak met bijna alles! Zo is er squeak, een open-source implementatie van smalltalk. Of python, een geinterpreteerde taal. Of perl, een taal die onder andere support bied voor regexp, en bovendien erg krachtig is met files, arrays, hashes etc. Voor webcoden heb je php, maar ook talen als ruby, python, en perl hebben frameworks voor het maken van webprogramma's. Bovendien bestaan JVM en mono ook nog, en die staan je in staat om respectievelijk java en C# te programmeren. Deze lijken qua syntax vrij veel op C, maar draaien in een VM en zijn makkelijker vanwege het gebrek aan memory managment. Ook zijn ze object-georienteerd, hoewel dat in C-gerelateerde talen vaak niet meer betekent dan het hernoemen van structs :) En op een boek van de bieb zou ik niet rekenen, want meestal ben je met leren programmeren veel langer bezig dan 3 weken. Mijn advies is eens te bedenken wat je precies wil leren. C kan ik aanraden, want het is de basis van veel moderne en populaire talen. Maar in veel zin zijn andere talen krachtiger. |
lol bestaat D :D nooit geweten, weet wel dat het ooit met A en B is begonnen, maar wist niet dat d ondertussen al bestond. Bestaat dat lang.
@TS Ik zou je wel C/C++ aanraden als je wil leren proggen, het is vrij low level vergeleken met de meeste andere talen, maar dat maakt het dat als je C redelijk beheerst dat de overstap naar andere talen veel makkelijker is. C/C++ is of course wel moeilijker natuurlijk omdat je idd te maken hebt met geheugenmangment enzo, maar toch, blijft leuk :p |
C!
En begin dan met een C voor dummies boek, daarin leggen ze het erg makkelijk en begrijpelijk uit. :) |
Ikzelf heb het geleerd dmv dit boek. Het is saai, ja, en het is dik, ja; maar het is allemaal wel heel helder. Vooral aan het hoofdstuk over datatypes zoals lijsten, stacks en binaire bomen, heb ik heel veel gehad.
D komt van digitalmars. Het komt met een garbage collecter (C ook, tenminste, met gcc van gnu. Ik neem aan dat je het op je computer hebt staan), binaire-compatibiliteit met C programma's, en heel veel andere goodies :) Toch kan ik ook talen als python en perl aanraden. Perl is vooral heel krachtig, maar je zult heel wakker moeten zijn om het te gebruiken. LISP is mijn eigenlijke favoriet. |
Wat een vraag. Bedenk eerst eens voor jezelf wat je wilt gaan schrijven: Web-based apps, GUI-apps, CLI-apps, drivers?
|
Python!
Daar ben ik nou eenmaal fan van. En het is serieus wel een erg goede taal om wat basisconcepten van programmeren te leren. In die zin lijkt het me een stuk geschikter dan C of C++. |
Zal ik dan maar Java zeggen? ;)
Een goed boek dat ook bij mij op school gebruikt wordt: An Introduction to Programming and Object Oriented Design, using Java |
C# en java (jvm/mono) werken prachtig! kunnen je vriendjes je progjes ook nog starten.
lekker OOP coden. |
Ok, dan ga ik er maar vanuit dat je GUI applicaties bedoelt.
Java: Java is in mijn ogen heel erg puristisch. Bijna alles is een object, en alles moet expliciet worden gedaan. By default werkt java met erg sterkte encapsulatie (getters en setters), in tegenstelling tot bijvoorbeeld Python. Dit kan zowel als voordeel als als nadeel worden gezien. Het meestgehoorde argument (en daar ben ik het deels mee eens), is dat java voornamelijk goed is in upscalen, dus voor grotere projecten. Bij kleinere projecten zit die verbositeit alleen maar in de weg. Voor bijvoorbeeld een hello world moet je al een hele klasse en een statische methode main() schrijven, welke vervolgens met System.out.println('tekst'); iets kan printen. Het voordeel bij grote projecten, is dat dankzij de structuur van java de code een stuk makkelijker is te onderhouden, zo zeggen sommigen. Nog een groot voordeel van java is dat java een enorm goede API documentatie heeft en dat het op elk platform waarvoor een JVM beschikbaar is, zal draaien. Een nadeel is swing (GUI) klasse. Deze is in mijn ogen nog te traag om echte desktop apps in te schrijven. Ook is de support voor native Look & Feel nog erg ver te zoeken. Op beide gebieden is java aan de weg aan het timmeren, maar voordat deze problemen zijn opgelost, zal er heel wat tijd overheen zijn gegaan. Ook wordt java niet met alle distro's meegeleverd. Een puntje om op te letten. Java is waarschijnlijk de beste taal om in te leren (OO) programmeren, vanwege z'n structuur. Aan de andere kant, kwaliteit van de code hang vooral van de programmeur en in veel mindere mate van de taal. Python: Python is heel intuïtief. De syntax is erg helder en overzichtelijk, en toch erg krachtig. Alle OOP mogelijkheden van java, zitten voor een groot gedeelte ook in python. Dankzij de eenvoud en intuïtiviteit van de syntax is een python programma meestal erg gemakkelijk te onderhouden (maar ook dit hangt in grote mate af van de stijl van de programmeur). Voor python zijn verschillende GUI toolkits te verkrijgen, maar daar heb ik niet zoveel ervaring mee. Python is overigens zeker niet het snelste taaltje dat er is. C++ Hier kan ik niet erg veel over zeggen. Het lijkt erg op java, maar dan zonder de structuur en zonder de quirks van java. Als toolkit kan ik je zeker Qt van trolltech aanraden. Werkt echt fantastisch. |
Wat heeft het nou voor zin om je favo codingtaal te noemen? In welke programmeertaal jij het liefst programmeert is persoonlijk. Ik zou zeggen: probeer een paar dingen uit, C, Java en er zijn genoeg andere talen met hun eigen voor- en nadelen.
Zoek iets uit wat bij jou past, programmeurs verschillen erg in hun 'gewoontes'. Zo vind ik Java veels te strict en limiterend en tijdrovend en bovendien traag, en licentietechnisch niet interessant. Maar dat wil niet zeggen dat jij die argumenten met mij deelt; bovendien heb jij vast andere prioriteiten dan ik. Dus: kijk om je heen en make up your own mind. :) |
ik heb gekozen voor c, gezien het het meeste aangeraden is, en ik er in eerste instantie ook aan dacht, bedankt allmaal! :)
|
Citaat:
Ditzelfde probleem zie je bijvoorbeeld ook met Macromedia Flash. Voor linux is er een binary voor, voor BSD niet. Flash is verweven tot een standaard maar één bedrijf heeft de touwtjes in handen en bepaalt op welk OS flash kan draaien. Cross-platform betekent voor mij dan ook dat een taal echt vrij moet zijn, en Java wordt hierin naar mijn oordeel foutief genoemd. |
Citaat:
45 minuten duurde het je om het werkend te krijgen, maar dit is slechts eenmalig (of iig 1x in de X tijd). Beschouw het als een performance penalty ;) Voor de rest kan ik me wel vinden in je argumenten omtrent de JVM, echter is apache nu ook bezig met een implementatie met hulp van Sun, en daar heb ik wel hoge verwachtingen van. Oveirgens is .NET niet een programmeertaal, maar een platform. De vergelijking zou dan beter opgaan als je de CLR van .net vergelijkt met de JVM van Java. Je keuze in programmeertaal is hierbij vrij, i.e. een taal die gecompileerd kan worden naar intermediate code. J# is dan met name interessant voor beginnende .net programmeurs die al java (en in het bijzonder J++) achter de kiezen hebben, aangezien volgens mij het hele arsenaal aan libs aanwezig is inclusief MS z'n libs en eventuele bestaande libs die geschreven zijn in andere talen. Crossplatform betekent voor mij toch echt dat er voor elke platform die meeweegt een runtime environment voorhanden is. Dat is volgens mij bij java ook het geval, iig dus voor de belangrijkste platformen. Gebruikersvriendelijkheid is voorlopig helaas nog een 2e. En dan nog terugkomend op je vorige post, waarin je Java te strict vindt, ik begrijp dit niet zozeer. Dit moet je namelijk, als je het OO paradigm correct toepast, zien als een VOORDEEL in dat Java/C#/J# strongtyped languages zijn, MET de mogelijkheid om dynamisch te typen afhankelijk van je structuur. Traag heeft overigens niets te maken met de taal, maar met de verbose JVM. Het bevat nogal wat legacy code, en bij opstarten vreet het al vrij veel geheugen, waardoor ik ook erg uit kijk naar Apache Foundation's implementatie van de JVM. Ook moet je je erbij neerleggen dat een JIT compiler nooit native code kan verslaan in performance, echter is het een misconceptie te denken dat een JIT altijd VEEL slomer is. Een JIT compiler heeft tijdens run-time een schatkist aan informatie itt native, en kan on the fly optimaliseren itt native. |
Citaat:
Er zijn een aantal redenen dat Java als 'langzaam' geld. Allereerst omdat mensen koppig alles in '100% pure java' willen schrijven, inclusief de widgetsets. God weet waarom. Een andere reden is het geheugen. Programmeurs bekend met Java weten dat Java alleen op de stack alloceert, en dat dit als snel geld. Probleem is alleen het volgende: java is een userspace programma en is in principe afhankelijk van de host-kernel voor de allocatie van geheugen. En hoewel de jvm tijdens initialisatie 64 mb RAM alloceert, wil dat nog niet zeggen dat het daadwerkelijk vrijgemaakt is. Dat regelt het systeem. Met als gevolg dat, alle optimalisaties ten spijt, Java qua geheugen voornamelijk afhankelijk is van z'n hostssysteem. Ten tweede: OO en strongly-typed-heid hebben geen fuck met elkaar te maken; integendeel, veel OO talen zijn juist dynamic typed. Waar Java je in limiteert zijn de kleine, stomme dingen, vooral. Je moet begrijpen dat 'n goede C programmeur weet dat het enige wat C doet 32 bit integers rondgooien is (ok, je kunt ook structs rondgooien, en floats, doubles en long doubles, maar daar zul je jezelf weinig mee bezighouden, vooral omdat het rondgooien van structs meestal gebeurt dmv het rondgooien van pointers naar structs, en dit zijn weer 32 bit integers.) Java is een taal van 20 jaar na C, en in de tussentijd hebben mensen (al dan niet terecht) bedacht dat 32 bit integers toch niet alles zijn. Vandaar de boolean, het meest gelimiteerde datatype ooit, en waarschijnlijk ook de meest zinloze. Booleans zijn niet alleen gelimiteerd, ze limiteren ook de functies die ze als argumenten nemen en als waarde teruggeven. Voor een C programmeur die gewend is 32 bits integers rond te gooien (en die wellicht heeft ontdekt dat je daarmee meer en nuttiger informatie kunt rondstrooien dan alleen true en false) is het stricte gebruik van booleans verstikkend. |
Citaat:
Citaat:
Object Georienteerd is hetgeen al als het een notie heeft van objecten. Het opzetten echter van een goede OO structuur begint met abstractie en composeren van 'onderdelen', en hierbij speelt typeren een grote rol bij, getuige ook het doel van interfaces en genericiteit. Citaat:
|
Ja, dat had k gelezen. Maar k las t alsof jij bedoelde dat t met elkaar te maken heeft alleen even duidelijk maken dat dat dus niet zo is.
Citaat:
|
Citaat:
|
een integer :)
|
Citaat:
|
Citaat:
Code:
|
Citaat:
|
nee, ik gebruik domweg 0 als false. Al het andere is true :)
Dat is gewoon een programmeertrucje dat ik heb aangeleerd. Ik weet dat je in java dezelfde expressies kunt 'escapen' door er !! voor te zetten, maar toch. |
hmm, ik ben t wel met dragenstorm eens, soms is het handig om te controlerne of iets niet nul is. Of in een while gewoon
While i { ... } Het is eigenlijk totaal niet netjes, maar ach soms wel fijner dan while i != 0 { .... } |
Citaat:
|
Citaat:
*excuus* |
| Alle tijden zijn GMT +1. Het is nu 21:51. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.