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:
http://en.wikipedia.org/wiki/Common_Intermediate_Languagequote:Op donderdag 7 juli 2011 14:24 schreef Raven_NL het volgende:
[..]
Kan je alleen maar dom doen ?
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 omgezet naar bytecode die vervolgens regel voor regel tijdens de uitvoering wordt geinterpreteert voor de java virtual machine.
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
Tadaa, Java en C# (of eigenlijk elke .Net taal) worden beide naar bytecode omgezet en daarna runtime omgezet met een JIT-compiler.quote:During compilation of .NET programming languages, the source code is translated into CIL code rather than platform or processor-specific object code. CIL is a CPU- and platform-independent instruction set that can be executed in any environment supporting the Common Language Infrastructure,[2] such as the .NET runtime on Windows, or the cross-platform Mono runtime. In theory, this eliminates the need to distribute different executable files for different platforms and CPU types. CIL code is verified for safety during runtime, providing better security and reliability than natively compiled executable files.
Wat klopt daar niet aan? Waarom zou je iemand die net begint memory management door de strot heen duwen? Sowieso, ik wil me er niet eens mee bezig houden, de klant betaalt voor functionaliteit, niet voor basale dingen die ook voor je gedaan kunnen wordenquote:
Mensen hebben verschillende definities van platform-onafhankelijk. Java kan platform-afhankelijk zijn als je platform-afhankelijke libraries gebruikt. C++ code (niet de binaries) kan platform-onafhankelijk zijn; applicatie die alleen van de standaard libs gebruik maakt kun je zonder wijzigingen voor zowel windows als linux compileren. Voor en tegenstanders (wat an sich al triest is, 'tegen' een programmeertaal zijn) van bepaalde talen hanteren verschillende definities al naar gelang wat hun het best uitkomt.quote:Op donderdag 7 juli 2011 14:32 schreef Pheno het volgende:
Ik zie in de OP dat C en C++ als platformonafhankelijk worden gezien door TS. Maar een C-programma gecompileerd op windows gaat op mijn mac niet werken, ik zal moeten hercompileren.
Platformonafhankelijkheid wil niet per definitie zeggen dat het op andere platformen kan draaien zonder opnieuw te compileren. Als het goed is kan je trouwens gewoon onder Windows je C applicatie compilen voor het Mac OS platform en andersom.quote:Op donderdag 7 juli 2011 14:32 schreef Pheno het volgende:
Ik zie in de OP dat C en C++ als platformonafhankelijk worden gezien door TS. Maar een C-programma gecompileerd op windows gaat op mijn mac niet werken, ik zal moeten hercompileren.
[..]
Wat klopt daar niet aan? Waarom zou je iemand die net begint memory management door de strot heen duwen? Sowieso, ik wil me er niet eens mee bezig houden, de klant betaalt voor functionaliteit, niet voor basale dingen die ook voor je gedaan kunnen worden
Dat is de definitie van platform-onafhankelijk die bijvoorbeeld Sun voor Java gebruikt. Er is niet maar 1 definitie, ieder heeft zo z'n eigen definitie.quote:Op donderdag 7 juli 2011 14:33 schreef Daeron het volgende:
Platformonafhankelijkheid wil niet per definitie zeggen dat het op andere platformen kan draaien zonder opnieuw te compileren.
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |