Ik ben van C++ 'doorgestroomd' naar C# (keuze van de baas...) en herken dit ook. Ik voelde me in het begin doodongelukkig om objecten te instantieren en daarna niet te disposen, maar in de praktijk werkt de garbagecollection redelijk goed (om niet te zeggen dat je los-vaste objecten moet beschermen tegen ontijdige opruiming...)quote:Op woensdag 29 juni 2011 21:50 schreef Ai_KaRaMBa het volgende:
Ik vind zelf (als C / C++ programmeur) het soms verdomd iritant dat je zelf geen invloed (of zelfs inzicht) hebt op de lifecycle van objecten in Java...
Ach, het kan nog erger. Neem nou APL, dat is een write-only taal. Teruglezen, laat staan debuggen is bijkans onmogelijk.quote:
Nee, het is daarvoor ontwikkeld. Dat is wat anders. Het heeft t.o.v. XML het voordeel dat het minder overhead heeft. Daarnaast gebruik ik het gewoon om simpele config files e.d. in te lezen en zal het me een worst wezen waarvoor het 'bedoeld' is volgens sommigen.quote:Op woensdag 6 juli 2011 13:48 schreef Daeron het volgende:
JSON is eigenlijk bedoeld om te communiceren tussen een server
Ja, en daarom worden zoveel grote projecten gedaan in Javaquote:Op woensdag 6 juli 2011 18:09 schreef Raven_NL het volgende:
Java is op de zelfde manier platform onafhankelijk als BASIC
Java is een interpreter prut taaltje dat doet alsof het een grote jongen is door zijn interpreter een virtuele machine te noemen..
Platform onafhankelijk ? aan mijn hoela
Verder.. Wat je ook maakt in java , het ziet er op de een of andere manier altijd houtje touwtje uit...
Als dat al gebeurt, dan leert de beginner daar vervolgens van. Vervolgens ontwikkelt deze beginner zich tot een programmeur die weet wat het is om zowel OO, procedureel als functioneel in een taal te kunnen programmeren. Java is voor masochisten: mensen die het (blijkbaar) geen probleem vinden om binnen een netwerk van zinnige en vooral ook een hoop minder zinnige regels en constructies gedwongen worden te blijven, het (blijkbaar) geen probleem vinden om geen interactieve prompt te hebben en continu te moeten compileren en het gezeur van een compiler aan te moeten horen, het (blijkbaar) fijn vinden 5-10 maal zoveel regels code te schrijven als voor hetzelfde resultaat in Python nodig was geweest.quote:Op woensdag 6 juli 2011 12:20 schreef Catbert het volgende:
[..]
Zal best, maar aan de andere kant laten scripttaaltjes als Python een beginner juist de meest walgelijke bakken spaghetticode produceren.
Nee, ik weet het niet, misschien omdat Java nog steeds zo populair is in het bedrijfsleven. Maar Java heeft zijn hoogtepunt gehad en gaat langzaam maar zeker het onderspit delven tegen de volgende generatie programmeertalen, zie bijv. de Tiobe index, waar talen als Java en C++ de laatste 10 jaar een dalende trend laten zien terwijl Python, Lua (en C#) een duidelijke stijgende trend kennen.quote:Waarom denk je dat je juist op informatica opleidingen met Java begint, omdat dat een "slechte" taal is?
Heb je wel eens met Python gewerkt? Ieder zijn voorkeur, maar dat Pythoncode veel leesbaarder is daar is vrijwel iedereen het wel over eens.quote:Op woensdag 6 juli 2011 17:54 schreef vriendelijkevriend het volgende:
[..]
Was Python niet dat taaltje waarbij de opmaak van je code ook een semantieke betekenis heeft en waarbij je afschuwelijke __underscore__ shit-constructies moet maken? __Oogt__leesbaar__ja__.
hier ook al trollen. Damn zeg. Ts google ff op c# vs java. Veel nuttige info over 2 goede omgevingen.quote:Op woensdag 6 juli 2011 18:09 schreef Raven_NL het volgende:
[..]
Java is op de zelfde manier platform onafhankelijk als BASIC
Java is een interpreter prut taaltje dat doet alsof het een grote jongen is door zijn interpreter een virtuele machine te noemen..
Platform onafhankelijk ? aan mijn hoela
Verder.. Wat je ook maakt in java , het ziet er op de een of andere manier altijd houtje touwtje uit...
De meeste mensen die ermee beginnen die hoor ik over de message passing syntax:quote:Op dinsdag 5 juli 2011 17:42 schreef retorbrapi het volgende:
[..]
Ik vraag me af wat je 'verschrikkelijk' vindt aan Objective-C?
| 1 2 | Gereedschapskist *kist = [Gereedschapskist initMetKleur:@"rood"]; [kist pak:@"hamer" enDoe:@"lekker gewelddadig"]; |
| 1 2 | Gereedschapskist kist = new Gereedschapskist("rood"); kist.doe("hamer", "lekker gewelddadig"); |
Met Java zit je gevangen in hun framework als je platformonafhankelijk wil zijn. Zodra je de leuke OS-services wil gaan aanspreken waarin het framework niet voorziet, dan ben je niet platformonafhankelijk meer. Bijvoorbeeld als je onder OS X van die Java-bindings naar Cocoa (het framework dat je zou moeten gebruiken daar) gaat gebruiken om van de leuke OS X features gebruik te kunnen maken.quote:Op woensdag 6 juli 2011 22:58 schreef FkTwkGs2012 het volgende:
[..]
hier ook al trollen. Damn zeg. Ts google ff op c# vs java. Veel nuttige info over 2 goede omgevingen.
Niet platformonafhankelijk. Java niet? Je weet waarschijnlijk niet half hoeveel stuff jij gebruikt die een vorm van java gebruiken. Telefoons, navigatiesystemen, medische systemen. Name it.
Ja, ik heb helaas ooit een p2p-client gemaakt in Python.quote:Op woensdag 6 juli 2011 22:39 schreef keesjeislief het volgende:
Heb je wel eens met Python gewerkt? Ieder zijn voorkeur, maar dat Pythoncode veel leesbaarder is daar is vrijwel iedereen het wel over eens.
Als je inderdaad JavaScript bedoeld en geen Java: ieder zichzelf respecterende frontendquote:Op vrijdag 1 juli 2011 17:36 schreef IDisposable het volgende:
JavaScript is echt horror. Het is moeilijk te debuggen/onderhouden. Daarnaast heb je te maken met compatibiliteits obstakels. En omdat het bovenop de browser stack draait, zijn de foutmeldingen over het algemeen zo generiek dat je er bijna niets meer mee kunt doen.
In de praktijk is dat geen belemmering, omdat je sowieso whitespace gebruikt als je je code een beetje overzichtelijk wilt houden. Het netto-effect is dat je geen haakjes om je blokken hoeft te plaatsen, niets meer, niets minder.quote:Op woensdag 6 juli 2011 23:19 schreef Henno het volgende:
[..]
Dan Python... puike taal op het hele verplichte indenten na dan.
"Ja dat verplicht je tot netjes werken!".
Misschien, maar het levert wel onnodige ambiguïteiten op. Ik vind het nou juist zo leuk dat ik bv. in Eclipse een coding style kan instellen voor m'n Java, en met 1 key combo al m'n code zo floeps, in de gewenste stijl kan gooien voordat het versiebeheer in gaat.
Hoe moet dat met Python als ie niet weet of die niet geïndente regel nou wel of niet bij die ene functie hoort? Beide gevallen zouden geldige code kunnen zijn! Met accolades is het tenminste altijd duidelijk, hoe de whitespace er ook bij hangt.
[..]
Ik had precies de tegenovergestelde ervaring. Ik heb in de loop van de tijd verschillende pogingen gedaan om Java onder de knie te krijgen, maar ik kan echt niet wennen aan alle overbodige rompslompcode en regeltjes (en wilde het ook niet meer vanaf het moment dat ik Python leerde kennen).quote:Op woensdag 6 juli 2011 23:40 schreef vriendelijkevriend het volgende:
[..]
Ja, ik heb helaas ooit een p2p-client gemaakt in Python.
voorbeeld?quote:Op donderdag 7 juli 2011 00:00 schreef keesjeislief het volgende:
[..]
Ik had precies de tegenovergestelde ervaring. Ik heb in de loop van de tijd verschillende pogingen gedaan om Java onder de knie te krijgen, maar ik kan echt niet wennen aan alle overbodige rompslompcode en regeltjes (en wilde het ook niet meer vanaf het moment dat ik Python leerde kennen).
"Als je platform specifieke dingen wilt doen ben je niet platform onafhankelijk". No shit sherlockquote:Op woensdag 6 juli 2011 23:30 schreef Henno het volgende:
Met Java zit je gevangen in hun framework als je platformonafhankelijk wil zijn. Zodra je de leuke OS-services wil gaan aanspreken waarin het framework niet voorziet, dan ben je niet platformonafhankelijk meer. Bijvoorbeeld als je onder OS X van die Java-bindings naar Cocoa (het framework dat je zou moeten gebruiken daar) gaat gebruiken om van de leuke OS X features gebruik te kunnen maken.
Dat heb je in C net zo goed. Als je in C gebruik maakt van Windows-specifieke functionaliteit dan gaat dat ook niet op Linux werken. Daarom abstraheer je de OS specifieke meuk in een aparte laag, dat geldt voor elk cross-platform project. Maar Java is wel, hoe dan ook, in de basis cross platform. Vergeet niet dat je de gecompileerde classes niet hoeft te hercompileren, dat doet de VM voor je.quote:En dan kan je net zo goed gewoon de boel in Objective-C gaan coden, want werken op Windows en Linux etc. doet het niet meer in die hoedanigheid
Als je een desktop applicatie bouwt die onder zo'n beetje alle OSen moet werken ben je gewoon dom als je dat niet in een platform onafhankelijke taal doet.quote:Plus: Java heeft de footprint van een olifant in een porseleinkast met die hele VM eronder. Leuk als academisch taaltje om de principes te leren, mede omdat het je genadeloos terugfluit als je niet netjes werkt... maar een serieuze desktop applicatie zou ik er zelf nooit mee schrijven.
Je bedoelt dus dat je OO programmeren niet snapt en daarom niet doorgezet hebt. Da's dezelfde reden dat een hoop mensen maar in PHP blijven kutten omdat dat wel zo'n lekker 'duidelijke' taal is. Hun argument is ook dat "print "Blaat"; een stuk 'duidelijker' is dan System.out.println("Blaat");. Nou, als dat je 'argument' is, prima. Zulke mensen moeten bij Java wegblijven want die halen alleen maar het gemiddelde niveau omlaagquote:Op donderdag 7 juli 2011 00:00 schreef keesjeislief het volgende:
Ik had precies de tegenovergestelde ervaring. Ik heb in de loop van de tijd verschillende pogingen gedaan om Java onder de knie te krijgen, maar ik kan echt niet wennen aan alle overbodige rompslompcode en regeltjes (en wilde het ook niet meer vanaf het moment dat ik Python leerde kennen).
Een paar simpele devvers die wat roepen zegt nog weinig over de echte wereld. Sorry johquote:Op donderdag 7 juli 2011 11:06 schreef Daeron het volgende:
Ach, hoe minder Java devvers hoe meer werk er voor mij is
quote:Op donderdag 7 juli 2011 09:58 schreef Catbert het volgende:
[..]
"Als je platform specifieke dingen wilt doen ben je niet platform onafhankelijk". No shit sherlock
[..]
Dat heb je in C net zo goed. Als je in C gebruik maakt van Windows-specifieke functionaliteit dan gaat dat ook niet op Linux werken. Daarom abstraheer je de OS specifieke meuk in een aparte laag, dat geldt voor elk cross-platform project. Maar Java is wel, hoe dan ook, in de basis cross platform. Vergeet niet dat je de gecompileerde classes niet hoeft te hercompileren, dat doet de VM voor je.
[..]
Als je een desktop applicatie bouwt die onder zo'n beetje alle OSen moet werken ben je gewoon dom als je dat niet in een platform onafhankelijke taal doet.
[..]
Je bedoelt dus dat je OO programmeren niet snapt en daarom niet doorgezet hebt. Da's dezelfde reden dat een hoop mensen maar in PHP blijven kutten omdat dat wel zo'n lekker 'duidelijke' taal is. Hun argument is ook dat "print "Blaat"; een stuk 'duidelijker' is dan System.out.println("Blaat");. Nou, als dat je 'argument' is, prima. Zulke mensen moeten bij Java wegblijven want die halen alleen maar het gemiddelde niveau omlaag![]()
Ach, er zijn talloze voorbeelden, maar een ding wat ik me nog duidelijk herinner is dat gekloot met verschillende constructors. Neem dit voorbeeldje van internet, een class Employee die met een verschillend aantal argumenten geinitieerd kan worden. In Java krijg je:quote:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public class Employee { private String myEmployeeName; private int myTaxDeductions = 1; private String myMaritalStatus = "single"; //--------- constructor #1 ------------- public Employee(String EmployeName) { this(employeeName, 1); } //--------- constructor #2 ------------- public Employee(String EmployeName, int taxDeductions) { this(employeeName, taxDeductions, "single"); } //--------- constructor #3 ------------- public Employee(String EmployeName, int taxDeductions, String maritalStatus) { this.employeeName = employeeName; this.taxDeductions = taxDeductions; this.maritalStatus = maritalStatus; } |
| 1 2 3 4 5 | class Employee(): def __init__(self, employeeName, taxDeductions=1, maritalStatus="single"): self.employeeName = employeeName self.taxDeductions = taxDeductions self.maritalStatus = maritalStatus |
Dat ik Perl gebruik om een bak tekst te om te klussen betekent ook niet dat Perl een goede taal is om mee te beginnen.quote:Op donderdag 7 juli 2011 12:50 schreef keesjeislief het volgende:
. Alle grotere programma's, waaronder administratieve software en vooral veel code voor wetenschappelijke doeleinden, die ik geschreven heb zijn volledig OO, maar als ik snel een progje wil dat een bergje foto's herschaalt en hernoemt kan ik dat in 10 regels doen en heb ik geen taal nodig die stampvoetend eist dat ik per se OO gebruik. Python laat mij als programmeur de beste benadering kiezen en laat me o.a. daarmee heel snel en efficient zijn.
Nou, wat een verschil. Alsof daar je tijd in gaat zitten bij het coden.quote:Ach, er zijn talloze voorbeelden, maar een ding wat ik me nog duidelijk herinner is dat gekloot met verschillende constructors. Neem dit voorbeeldje van internet, een class Employee die met een verschillend aantal argumenten geinitieerd kan worden. In Java krijg je:
[ code verwijderd ]
In Python is dat veel simpeler en eleganter:
[ code verwijderd ]
Dat lijkt me geen reden om een taal 'verschrikkelijk' te vinden. Als het al zo'n verschil uitmaakt zou ik het eerder een voordeel vinden, want het maakt de code veel duidelijker. Ik vraag me echt af wat de redenen van Trollface zijn want ik vind het zelf echt een hele plezierige taal.quote:Op woensdag 6 juli 2011 23:19 schreef Henno het volgende:
[..]
De meeste mensen die ermee beginnen die hoor ik over de message passing syntax:
[ code verwijderd ]
i.p.v. iets als in Java of PHP:
[ code verwijderd ]
We zijn zo ongelooflijk gewend aan de syntax van voorbeeld twee, dat Objective-C er gewoon alien uitziet voor veel mensen. Merk op dat er bij voorbeeld 1 misschien meer tekst staat, maar dat het wel zichzelf beter uitlegt. Je roept geen methode aan, maar je stuurt een bericht. In dit geval het bericht kist:pak:enDoe. Je ziet dat je aan parameters een naam kan hangen, wat je code zelf juist leesbaarder kan maken doordat je er een betekenis aan hangt.
Ik denk dat ik als Microsoft certified engineer wel weet waar ik over praat ja.quote:Op woensdag 6 juli 2011 19:14 schreef Catbert het volgende:
[..]
Nee, het is daarvoor ontwikkeld. Dat is wat anders. Het heeft t.o.v. XML het voordeel dat het minder overhead heeft. Daarnaast gebruik ik het gewoon om simpele config files e.d. in te lezen en zal het me een worst wezen waarvoor het 'bedoeld' is volgens sommigen.
[..]
Ja, en daarom worden zoveel grote projecten gedaan in Java![]()
Kneus. Als je niet weet waar je 't over hebt, hou dan je mond. Met je 'geinterpreteerd'
Python is een uitstekende taal om mee te beginnen. Ik heb echt geen zin om alle argumenten nog een keer te gaan herhalen, hier staat bijv. een goed stuk van een Amerikaanse prof. CS en hier een stuk tekst van een mailing list:quote:Op donderdag 7 juli 2011 12:54 schreef Catbert het volgende:
[..]
Dat ik Perl gebruik om een bak tekst te om te klussen betekent ook niet dat Perl een goede taal is om mee te beginnen.
quote:Carlos,
John also has an excellent textbook: Python Programming: An
Introduction to Computer Science. We are in our second year of using
this book in our CS1 class and are very happy with it. Because of
its power and simplicity we have found that students enjoy the class
and can do more interesting projects in their first course than they
could with Java.
For example my students are now (in week 7 of the semester) writing
functions to enlarge images, smooth the enlarged images, and do edge
detection on the images the image library is so simple that the
students can really concentrate on the problem solving parts of the
exercise. For me these are great introductory exercises that get
them using nested loops, simple conditionals, and functions. I think
the students have more fun and are more successful when they can see
the results of their work visually.
We also use Python in our CS2 course which focuses on data
structures, and one of our colleagues is using Python in his advanced
data structures course this year. The great thing about using Python
in a data structures course is that there is almost a one-to-one
mapping from pseudocode to Python. So the students can really see
the how the concepts get mapped to code without all the extra
overhead that a language like Java imposes.
Of course we also teach and use Java but we don't introduce our
students to Java until the third course in our introductory
sequence. The nice thing about holding off on Java until the third
course is that the students now know enough computer science that we
can work on bigger and more interesting problems while they are
learning Java. In addition I can now use Python to compare and
contrast as I introduce new language concepts in Java.
Brad
--
Brad Miller, PhD
Assistant Professor
Luther College
Ja, dat gaat het, samen met die honderden andere kleinere en grotere voorbeelden van constructies waarin Python eleganter en intuitiever is. Daarom ook zo'n 5-10 maal minder regels code in Python voor dezelfde taak.quote:Nou, wat een verschil. Alsof daar je tijd in gaat zitten bij het coden.
Python is goud waard, maar wordt meestal gebruikt als script taal in een of andere toepassing die dus in een andere programmeertaal echt gemaakt wordt. Bijvoorbeeld Blender: Geschreven in C/C++ en gebruikt Python als script taal voor add ons en dergelijke.quote:Op donderdag 7 juli 2011 14:03 schreef keesjeislief het volgende:
[..]
Python is een uitstekende taal om mee te beginnen. Ik heb echt geen zin om alle argumenten nog een keer te gaan herhalen, hier staat bijv. een goed stuk van een Amerikaanse prof. CS en hier een stuk tekst van een mailing list:
[..]
[..]
Ja, dat gaat het, samen met die honderden andere kleinere en grotere voorbeelden van constructies waarin Python eleganter en intuitiever is. Daarom ook zo'n 5-10 maal minder regels code in Python voor dezelfde taak.
Post er eens een paar dan?quote:Op donderdag 7 juli 2011 14:03 schreef keesjeislief het volgende:
Ja, dat gaat het, samen met die honderden andere kleinere en grotere voorbeelden van constructies waarin Python eleganter en intuitiever is. Daarom ook zo'n 5-10 maal minder regels code in Python voor dezelfde taak.
quote:Op donderdag 7 juli 2011 13:55 schreef Raven_NL het volgende:
[..]
Ik denk dat ik als Microsoft certified engineer wel weet waar ik over praat ja.
Java is een interpreter taal net als basic. Dat de code in een andere verborgen taal wordt omgezet om dit te verbergen doet uiteraard niet terzake.
Dit is ook een van de belangrijkste verschillen in werking tussen C# (.NET framework) en java
C# is WEL een taal die naar machinecode gecompileerd wordt.
En noem eens EEN groot stand alone programma dat in java geschreven is...
Inderdaad. Nooit van MSIL gehoord kennelijk.quote:Op donderdag 7 juli 2011 14:16 schreef Daeron het volgende:
Dan zou ik toch eens heel gauw je certificaat inleveren want C# is net als Java een taal die naar bytecode omgezet wordt en daarna met een JIT compiler runtime wordt omgezet naar machine code.
Kan je alleen maar dom doen ?quote:Op donderdag 7 juli 2011 14:16 schreef Daeron het volgende:
[..]
Dan zou ik toch eens heel gauw je certificaat inleveren want C# is net als Java een taal die naar bytecode omgezet wordt en daarna met een JIT compiler runtime wordt omgezet naar machine code.
Juist....quote:Op donderdag 7 juli 2011 14:24 schreef Catbert het volgende:
Ik denk dat je sowieso beter niet met C++ kunt beginnen. Later C++ leren is IMHO een aanrader, net zoals iedere goeie programmeur IMHO wel eens dingen in assembly gedaan heeft, maar om mee te beginnen nee. Ik weet nog dat ik toen ik met C++ begon gewoon 2 dagen bezig ben geweest met een suffe fout van me (schrijven naar geheugen dat als "read only" gealloceerd was ofzo) en doodleuk een "kernel panic" voor m'n neus kreeg. Dan is Java (of C#) toch een heel stuk n00b-vriendelijker
.Net spul wordt naar MSIL gecompileerd, java naar bytecode. Beiden zijn binaire-code 'like' die dan door de VM (ja, .Net heeft ook een VM) omgezet worden naar platform-specifieke binaire code.quote:Op donderdag 7 juli 2011 14:24 schreef Raven_NL het volgende:
C# ( en andere .NET code) wordt eenmalig gecompileerd voor de machine waar het programma op gaat draaien. Alleen als code of framework veranderen is nieuwe compilatie nodig.
Java wordt net zo goed als .Net at runtime omgezet naar platform specifieke code.quote:Java wordt omgezet naar bytecode die vervolgens regel voor regel tijdens de uitvoering wordt geinterpreteert voor de java virtual machine.
En dat laatste is gewoon een ronduit trieste opmerking.quote:Er zijn op dit punt behoorlijk wat verschillen tussen C# en java..
Maarja een C# ontwikkelaar rijdt ook meestal in een dikkere auto dan een java programmeurtje
Als je het ergens niet mee eens bent, vertel gerust. Maar met zo'n opmerking kan ik niet zo veel.quote:
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |