Op zoek naar een nieuwe taal
Voor een nieuw project ben ik op zoek naar een nieuwe programmeertaal, normaal gesproken zou ik het met PHP / Javascript doen... maar omdat ik het belangrijk vind dat gebruikers zelf 'modules' kunnen toevoegen en ik het geen goed plan vond om ze hun eigen PHP classes te uploaden ben ik tot de conclusie gekomen dat ik maar eens verder moet gaan kijken in de wereld van programmeren.
Zodra ik begon te denken aan 'offline' programmeertalen, dacht ik aan ruby, python en perl. 3 talen waar ik nog niet mee gewerkt heb.
Na een aantal meningen gelezen te hebben over de 3 talen blijven er eigenlijk 2 over en heb ik toch wat moeite met te beslissen welke het moet wezen.
Ruby en Python schijnen beide een betere keus te zijn dan Perl, de reden heb ik niet helemaal begrepen, alleen dat mensen 'het licht' zagen nadat ze jaren in perl gewerkt hebben en vervolgens naar een van de andere twee zijn over gestapt.
Van wat ik heb begrepen is Python simpeler en makkelijker te lezen,
Ruby bied daar tegenover meer flexibiliteit.
Dat klinkt allemaal erg leuk en aardig, maar maakt het niet makkelijk te kiezen.
Voor het project zijn een aantal dingen belangrijk, dus ik ga mijn keuze laten afhangen van wat het beste bij het project past.
Belangrijk is het verbinden met het internet, er zal nogal wat met externe servers gecommuniceerd worden dus dit moet robuust en het liefst ook snel mogelijk zijn.
Ook belangrijk zijn reguliere expressies, of iets soortgelijks. Native functies die geijkwaardig (of beter) zijn als preg_match.
Het derde punt is het dynamisch laden van modules, (uit een bepaalde map, bijvoorbeeld)
Tot slot toegang tot een database, al is dit een bonus, informatie opslaan hoeft immers niet perse met een database te gebeuren.
Gezien deze post langer is dan ik had verwacht vraag ik waarschijnlijk nogal veel van jullie, toch zou ik graag jullie meningen willen horen.
Als je met Java werkt kan je de HttpServlet gebruiken. Die werkt uitstekend en is uitsluitend gemaakt voor communicatie over HTTP (je kan je request en response volledig zelf beheren). Met regex'en is Java ook redelijk sterk. Hiervoor bestaat dacht ik een native object waarmee je je match kan doen. Dynamisch laden van modules kan je doen met reflectie. Ten slotte is database toegang met Java ook niet zo moeilijk.
Sorry voor nog een extra goede optie te geven;)
Jens
edit:
de link onder reflectie wou niet pakken:
Gewijzigd op 14/12/2010 19:15:58 door Jens V
Ook belangrijk is dat het geen open source is, natuurlijk.
Had ik er waarschijnlijk wel bij moeten zeggen, open source is ook belangrijk.
Dat zijn Python en Ruby namelijk wel.... toch?
Ik heb geen idee wat je wilt, maar wil je echt iets fatsoenlijks programmeren, doe dat dan in C++. Dat is een echte programmeertaal. Ik zag ergens perl staan, maar ook dat is een scripttaal.
PHP heeft veel van Perl overgenomen, vandaar dat ik dacht dat het een goeie optie zou kunnen zijn. Na wat rond gekeken te hebben denk ik dat ik beter een 'modernere' taal kan kiezen.
Goed, ik heb mijn keuze gemaakt. Python word het. Leesbaarheid heeft de doorslag gegeven.
Ik kwam een artikel tegen waar de 2 besproken werden, de volgende stukjes code kwamen er in voor:
Ruby code:
En vervolgens Python:
Bij welke snap je beter wat de bedoeling is?
Al is het vreemd (voor mij tenminste) dat loops niet worden afgesloten... maar goed.
Bedankt voor de input!
(btw, blijf gerust verder suggereren, wie weet zoekt er iemand anders ook naar een programmeertaal en dan is dit misschien een handige referentie)
Denk meer modulair, deployen van jar bestanden, het optuigen van een applicatieserver zodat stukjes applicatie (de jar bestanden) gedeployed kunnen worden. Een Open Source applicatieserver die ook in het bedrijfsleven wordt toegepast is JBoss. Hierin kan je de autorisatie zodanig inregelen dat gebruikers zelf 'modules' kunnen toevoegen.
Wat mooi is aan C is dat je voeling hebt met de machine. C draait niet op een virtuele machine. Als je bv. een object of array aanmaakt, kan je mooi zien hoeveel geheugen dat object inneemt.
Ook de syntax vind ik prachtig. Merk op dat de syntax vrij goed lijkt op die van php.
Johan Dam op 15/12/2010 09:20:09:
C++ heb ik ook ervaring mee, werkt op zich wel goed (ik ergerde me vooral aan de IDE) Mooie taal geef ik toe, maar teveel gedoe met pointers als je het mij vraagt. Bovendien raakte ik half de weg kwijt toen ik een simpel venster probeerde te maken. Ook vind ik de leesbaarheid en complexiteit van C++ nogal een nadeel.
Een simpel venster maken kan je met Qt doen. Maar wederom, niet volledig open-source nee... Maar ik dacht dat je op zoek was naar talen voor op het web? Dan komt C++ of C toch niet direct in aanmerking..
Swoit, je keuze is gemaakt;)
En if word afgesloten zodra je het met een indent afsluit.
Dus je sluit het gewoon af door weer een tab naar voren te gaan.
Ook kent python geen array's, maar list comprehensions.
Ik heb altijd dubbele gevoelens bij python, omdat ik mijn eerste project daar volledig in heb verknald (een 3-d race game in 1 klassen, die constant opnieuw werd geladen).
Maar het is enorm wennen als je vanuit PHP komt, maar dat is met vrijwel alle talen
Jens V op 15/12/2010 10:16:15:
Een simpel venster maken kan je met Qt doen. Maar wederom, niet volledig open-source nee... Maar ik dacht dat je op zoek was naar talen voor op het web? Dan komt C++ of C toch niet direct in aanmerking..
Swoit, je keuze is gemaakt;)
Johan Dam op 15/12/2010 09:20:09:
C++ heb ik ook ervaring mee, werkt op zich wel goed (ik ergerde me vooral aan de IDE) Mooie taal geef ik toe, maar teveel gedoe met pointers als je het mij vraagt. Bovendien raakte ik half de weg kwijt toen ik een simpel venster probeerde te maken. Ook vind ik de leesbaarheid en complexiteit van C++ nogal een nadeel.
Een simpel venster maken kan je met Qt doen. Maar wederom, niet volledig open-source nee... Maar ik dacht dat je op zoek was naar talen voor op het web? Dan komt C++ of C toch niet direct in aanmerking..
Swoit, je keuze is gemaakt;)
Nee, juist niet op het web :P De reden dat ik een andere taal zoek / zocht is omdat de applicatie makkelijk uitgebreid moet kunnen worden door externe modules.
Met een webtaal zijn hier 3 mogelijkheden voor.
1. Automatisch laten scannen en daarmee niks toelaten wat niet aan hele strenge eisen voldoet waardoor de modules bijna niks meer kunnen.
2. Automatisch scannen op lichte eisen en het makkelijk maken dat de modules je website omzeep helpen. (Je gaat geen 'vreemde' code toelaten op je applicatie)
3. Alles handmatig controleren.
Door het offline te halen zijn er natuurlijk nog steeds risico's maar is niet elke gebruiker (of de maker) in gevaar als 1 iemand een 'foute' module maakt / gebruikt.
C en C++ zijn mooie talen, de snelste ook. Toen ik ermee begon kende ik er amper wat van dus dat ik een venster heel makkelijk met dit of dat kon maken had ik nog niet door :P ik las er voorbeelden van en had moeite ze te begrijpen. Ze zijn gewoon niet leesbaar genoeg in mijn ogen.
Lees nu een PDF 'dive into python'. Het is inderdaad wel wennen, zodra ik bij dictonairies kwam dacht ik 'oh dat is dus een array' daarna kwamen ze met lists aan en vervolgens met tuples... maar goed, het word tenminste duidelijk uitgelegd :P
Snap nu ook dat de eisen die ik had eigenlijk nergens op slaan. Je kan met iedere taal doen wat ik wil (hoe makkelijk of moeilijk dan ook) De vraag is welke taal je het meeste aanspreekt, welke syntax je logisch vind, enz.
Nou ja, tenzij snelheid een erg belangrijke eis zou zijn.. dan is de keus makkelijk (C / C++)