Hallo.
Ich würde gerne Programmierung fürs Web machen - und zwar Abseits des
üblichen Wegs mit PHP. Auch wenn meine Aufgabe mit PHP lösbar wäre, ich
will eben nicht den Mainstream Weg gehen, und mich etwas exklusiver
stellen.
Ich möchte auf jeden Fall eine andere Programmiersprache als PHP nutzen.
Auch möchte ich mir den Weg zur Android App möglichst offen halten, denn
Smartphones und Tablets werden heutzutage immer wichtiger.
Nach erster Recherche kommt Python und Java in Frage.
Vorteil von Python: Es soll einfach und schnell zu erlernen sein.
Mit Python lassen sich wunderbar dynamische Webseiten erstellen, es gibt
auch Frameworks dafür.
Der Weg in Richtung Smartphone steht als sogenannte WebApp offen.
Notfalls, wenn man eine "richtige" app mit python machen will, gibt es
für Android auch python Frameworks. Die App wird dadurch allerdings
massiv aufgebläht.
Vorteil von Java: Java auf kann verschiedenen Wegen auch genutzt werden,
um serverseitig dynamische Webseiten zu erzeugen.
Und man ist mit der Programmiersprache näher am Thema JavaScript /
jQuery und Servlets dran, was durchaus von Vorteil ist.
Mit Java können Serverseitig durchaus auch WebApps gemacht werden (wäre
auch Step 1), der Sprung zur "echten" Android App ist jedoch deutlich
kleiner, mit Java kann man direkt loslegen mit der Entwicklung einer
richtigen App.
Nichts destro trotz würde ich allein Android als echte App unterstützen,
sonstige Plattformen müssen sich mit der WebApp zufrieden geben.
Nachteil von Java: Es soll schwer zu erlernen und kompliziert sein.
Was würdet ihr wählen? Python oder Java?
Elias schrieb:> Ich möchte auf jeden Fall eine andere Programmiersprache als PHP nutzen.
Sehr vernünftig :)
> Auch möchte ich mir den Weg zur Android App möglichst offen halten, denn> Smartphones und Tablets werden heutzutage immer wichtiger.
Wenn Android extrem wichtig für Dich ist, bietet sich Java an.
> Nach erster Recherche kommt Python und Java in Frage.
Und Scala, Ruby, Perl, HTML5 + JavaScript, ...
> Nachteil von Java: Es soll schwer zu erlernen und kompliziert sein.
Nicht wenn man C++ kann :)
> Was würdet ihr wählen? Python oder Java?
Im Idealfall beides. Wobei ich Python bis heute nicht wirklich kann, im
Gegensatz zu Java.
@lächler
Naja, PHP macht irgendwie "fast jeder".
Ich selbst kann auch schon einigermaßen PHP.
Ich will etwas lernen, was eben nicht schon 15 Leute im erweiterten
Bekanntenkreis auch schon auf ähnlichem Niveau können.
Mein Projekt wäre natürlich mit PHP realisierbar. Aber will ich das?
Nein.
Ich verbau mir zwar den Weg, es auf irgendwelchen 0815 Low cost Shared
Webhosting Angeboten laufen zu lassen, die meißt nur PHP können. Aber da
muss es ja auch nicht installiert werden, das würde eh keinen Sinn
machen da dort die relevanten lokalen Daten gar nicht zur Verfügung
stehen. (außer man ließe den Raspi erst mal alles da hochladen)
Es ist außerdem ein Unikat, es ist nicht dafür gedacht, es auf den
allgemeinen Markt zu werfen.
Du mußt die Konzepte hinter einer tragfähigen Softwarearchitektur
verstehen. In welcher Sprache das dann umgesetzt wird, ist heute
irrelevant (früher war das nicht unbedingt so).
Ich kann Java auch besser als Python. Allerdings kann ich auch PHP, C++
und paar andere Sprachen. Die Logik, dass Du dann 'exklusiver' bist,
kann ich so nicht nachvollziehen. Der Einblick in andere Sprachen
erweitert Deinen Horizont und Du bekommst Zugang zu vielen Sources, die
Du nutzen kannst (portieren, davon lernen usw).
Ich würde auch jedem raten erstmal Englisch zu lernen statt Urdu. Ist
vielleicht weniger exklusiv, aber dafür mehr nützlich? ;-)
Also Python ist mehr so eine quick&dirty bastel-Kiste.
Das geht schon damit los, dass schleifen nicht per klammer sondern per
einrückung definiert sind. Sowas kann in einem großen Projekt nur schief
gehen.
Der große Vorteil ist halt die Interpreter-Natur davon. Die macht es
einem leichter ein Stück Code einfach mal so hinzurotzen, der
Interpreter sucht sich dann schon die Datentypen raus.
Java ist gezähmtes C++ und damit sehr mächtig, aber auch sehr komplex.
Die gadgets wie garbage collection machen einem das Leben etwas
leichter, aber kosten natürlich Performance.
Meine Empfehlung geht eher Richtung Java für ein "richtiges" Projekt.
Python ist eher nützlich wenn man in fünf Minuten irgendwas laufendes
zusammenwerfem will/muss.
Mark Brandis schrieb:> Elias schrieb:>> Ich möchte auf jeden Fall eine andere Programmiersprache als PHP nutzen.>> Sehr vernünftig :)
Ja, ich will nicht den Mainstream Weg gehen :)
>>> Auch möchte ich mir den Weg zur Android App möglichst offen halten, denn>> Smartphones und Tablets werden heutzutage immer wichtiger.>> Wenn Android extrem wichtig für Dich ist, bietet sich Java an.
Ja, ich habe Andriod Geräte, für die ich auch gerne irgendwann mal
entwickeln würde. Zunächst als WebApp, irgendwann aber gerne auch mal ne
"richtige" App. (Die dann aber der einfachheit halber nur Android only
wird). Falls ich das Projekt irgendwann doch mal weitergebe, wird halt
ein bestimmtes Android Gerät als "Monitor" einfach vorrausgesetzt,
basta. Oder man nutzt halt die WebApp.
>>> Nach erster Recherche kommt Python und Java in Frage.>> Und Scala, Ruby, Perl, HTML5 + JavaScript, ...
HTML5 und JavaScript brauch ich sowieso.
Scala und Ruby kenne ich nur vom Namen her. Mit Perl habe ich mich mal
grundlegend befasst, aber da ziehe ich dann doch Python vor.
>>> Nachteil von Java: Es soll schwer zu erlernen und kompliziert sein.>> Nicht wenn man C++ kann :)>>> Was würdet ihr wählen? Python oder Java?>
C++ kann ich die Grundlagen. Leicht eingerostet, ist schon ne weile her.
Da hab ich sogar einen Kurs besucht.
Allerings wurden da ehr die absoluten Grundlagen erklärt. Also es wurden
Dinge wie z.B. Programmablaufplan oder verschiedene Programmierparadigma
wie z.B. oop / prozedurale Programmierung erklärt. Auch das EVA Prinzip,
getter, setter. Und auch Klassen, Objekte, Methoden usw.
Basics wie z.B. Variablentypen, Schleifen, Bedinungen, usw, natürlich
auch.
Wirklich programmiert wurde da allerdings kaum, war eigentlich fast nur
Theorie.
Ich habe Kursbegleitend selbst ein wenig herumprogrammiert, es klappte
auch einigermaßen.
Probleme hatte ich in C++ mit Pointern und Casts.
Und dass ich oftmals schlicht den Faden verloren habe.
Meine Abschlussarbeit hab ich dann jedoch leider mit Hilfe von
VisualBasic und weiteren Microsoft Programmen erstellt. (Asche über mein
Haupt, aber es gab keine Vorgabe, wie es zu lösen war)
> Im Idealfall beides. Wobei ich Python bis heute nicht wirklich kann, im> Gegensatz zu Java.
Python kann ich auch noch nicht. Aber das kann sich ändern :)
Falls ich mich nicht für einen Einstieg in Java entscheide.
Max D. schrieb:> Also Python ist mehr so eine quick&dirty bastel-Kiste.> Das geht schon damit los, dass schleifen nicht per klammer sondern per> einrückung definiert sind. Sowas kann in einem großen Projekt nur schief> gehen.
Python zwingt so aber auch zu einem "sauberen Programmierstil". Die
Einrückungen sind da ja nicht nur Optik, sondern funktionsrelevant.
> Der große Vorteil ist halt die Interpreter-Natur davon. Die macht es> einem leichter ein Stück Code einfach mal so hinzurotzen, der> Interpreter sucht sich dann schon die Datentypen raus.>
Ja, man muss Strings z.B. nicht als solche definieren. Eine notwendige
Variablendeklaration sehe ich nun nicht als Hindernis an.
Kompliziert wirds erst dann, wenn Typenumwandlungen ins Spiel kommen.
> Java ist gezähmtes C++ und damit sehr mächtig, aber auch sehr komplex.> Die gadgets wie garbage collection machen einem das Leben etwas> leichter, aber kosten natürlich Performance.
Ja, Java und C++ sind sich schon irgendwie ähnlich, vielleicht ist das
auch ein Vorteil, weil man dann einfacher "wechseln" kann.
>> Meine Empfehlung geht eher Richtung Java für ein "richtiges" Projekt.> Python ist eher nützlich wenn man in fünf Minuten irgendwas laufendes> zusammenwerfem will/muss.
Für das Projekt müsste ich dann zunächst mal auf Dinge wie JSP setzen.
Oder ich muss als "Zwischenschicht" noch ein kleines PHP bzw Python
Script basteln.
Dann lass ich das Java Programm aber nur die Rohdatenverarbeitung machen
und das was mit Darstellung zu tun hat (z.B. html zusammensetzen) wird
auf die Scriptsprache verlagert.
Die Sprache allein ist nicht der große Unterschied, wenn es um
Web-Applikationen geht.
Java an sich finde ich nicht besonders schwierig bzw. man kann mit einem
geringen Grundstock schon einiges machen. Sobald es etwas komplexer
wird, wird man um die Verwendung von Bibliotheken nicht herumkommen, von
denen Java bzw. das JDK schon etliche mitbringt.
Zusätzlich könntest Du bei Java für Web-Applikationen schnell an einen
Punkt kommen, wo es Richtung JEE geht -- und dann ist die eigentliche
Sprache nur ein kleiner Teil.
Elias schrieb:> Für das Projekt müsste ich dann zunächst mal auf Dinge wie JSP setzen.
Kann man machen, für eine richtige WebApp muss man aber auch den ganzen
Käse mit Ajax etc selbst ausprogrammieren.
JSP ist nicht mehr ganz so up-to-date.
JSF mit einem (Frontend-)Framework wie
http://www.primefaces.org/showcase/
nimmt einem da wahnsinnig viel ab und man kann sich um die wirkliche[TM]
Programmierung (in Schlipssprech: Businesslogic) kümmern.
Einen Blick ist das allemal wert, v.a. weil sich Primeface auch um
responsive-foo kümmert und man, wenn das nichtmehr reicht, auch eine
mobile-Version hätte.
Grüße
Ok, nicht Mainstream. Was haben wir denn da so im Angebot?
Hmm, zum Beispiel Go. Machen nur so rund 0,3% aller Programmierer. Sogar
weniger als noch PL/I machen. Mit Go bist du voll 1337. Und Go ist von
Google, also 2*1337, oder sogar 1337^2.
Oder wie wäre es mit Lua? Machen nur rund 0,4% aller Programmierer.
Allerdings plärren die so laut rum wie geil Lua ist, dass man glaubt Lua
wäre voll Mainstream. Hmm, eventuell also doch nichts für dich.
He, ich hab's. FORTRAN oder COBOL. Das ist so richtig voll Old School
und Retro. Machen nur so rund 0,6% bis 0,7% aller Programmierer. Damit
bist du DAS Gespräch auf jeder Party. Zumindest wenn du schon graue
Haare hast.
Nächster Versuch. Ein neuer Shooting Star soll ja F# sein. Es steht bei
sagenhaften 1,5%. Vielleicht schon zu mainstreamig? Stammt von Microsoft
Research. Oh je, uncool.
Also doch Python. 2,6%. Die Sprache ist zwar scheiße und die Fanboys
geben an wie eine Tüte Mücken, aber gegenüber Java mit fast 16% ist das
so richtig ghetto und voll underdog. Yo, wir haben es: Python ... läuft!
Ich habe früher auch php verwendet, habe aber festgestellt, dass
serverseitig htmlseiten zu generieren nur das cacheing stört und
Serverrechenzeit verschwendet. Zudem kann sie nicht mit apache cordova
als locale Seite verwendet werden. Ich empfehle Templateisierung und
konzepte wie mvc vollständig und ausschlieslich clientseitig zu lösen.
Die Daten kann man sich per REST-Schnitstelle und/oder websocket liefern
lassen. Ich kombiniere gerne beide, indem ich per Websockets
informationen über geänderte REST-Inhalte versende, um die vorteile des
cacheings mit echtzeit updates zu kombonieren. Mit html5 offline app (
mittels application cache und manifest datei ) können dabei alle
requests auf unveränderte Ressourcen vermieden werden.
Java mit spring, hibernate, etc. ist perfekt um solide
REST-Schnittstellen zu erstellen.
Websocket fand ich mit nodejs am einfachsten.
Am ende liegt die Umsetzung aber bei dir.
Ich kann besser Python als Java.
Ich mag das Motto "Batteries Included" bei Python einfach, es gibt super
viele Libs die einfach dabei sind... und um so mehr die man einfach
nachinstallieren kann.
Diese imense auswahl macht es manchmal ehr schwierig sich für eine zu
entscheiden.
Ich glaube wenn man schnell Ergebnisse will ist python einfach
meilenweit vorraus...
Java ist in meinen Augen mehr so eine Hipstar Geschichte. Aber grade
wenn man kram für Android entwickeln möchte wohl das mittel der Wahl.
Stefan schrieb:> Dieses Forum heißt mikrocontroller.net, oder? Warum werden hier immer> wieder Web-"Programmier"-Themen diskutiert?> S.
Vieleicht weil das das Unterforum "PC Programmierung" ist?
8==============D schrieb:> Java ist in meinen Augen mehr so eine Hipstar Geschichte. Aber grade> wenn man kram für Android entwickeln möchte wohl das mittel der Wahl.
Typisch Python Fanboy.
Seit 15 Jahren (Java ist älter, aber da finden sich keine Zahlen),
befindet sich Java durchgehend unter den Top 3 der am häufigsten
verwendeten Programmiersprachen (zusammen mit C und C++). Seit 10 Jahren
befindet sich Java sogar durchgehend unter den Top 2 (zusammen mit C).
Java alleine ist mehr als 6 mal populärer als Python. Zusammen sind Java
und C mehr als 12 mal populärer als Python.
Java war schon etabliert, da gab es keine Hipster und keine Android
Apps. Python hingegen ist genau so eine Hipster-Geschichte. Rossum
musste seine Klammern-Phobie öffentlich ausleben, und die Fanboys
erklären das irrelevante Ergebnis zur neuen Superwaffe.
Die einzige Programmiersprache, die ihr Überleben Apps zu verdanken hat
ist Objective-C. Objective-C war fast tot, bevor Apple es für iPhone
Apps verwendete. Jobs hatte Objective-C stark auf seinen NeXT-Systemen
propagiert, war aber mit der Firma auf die Schnauze gefallen. Erst mit
dem iPhone ging es wieder aufwärts.
Hannes Jaeger schrieb:> Seit 15 Jahren (Java ist älter, aber da finden sich keine Zahlen),> befindet sich Java durchgehend unter den Top 3 der am häufigsten> verwendeten Programmiersprachen (zusammen mit C und C++). Seit 10 Jahren> befindet sich Java sogar durchgehend unter den Top 2 (zusammen mit C).> Java alleine ist mehr als 6 mal populärer als Python. Zusammen sind Java> und C mehr als 12 mal populärer als Python
Und wo macht es das jetzt besser oder schlechter? Java ist jedenfalls
weit weniger portabel (und jeder der was anderes sagt, sagt wohl auch
das analsex besser is weils auf beiden geschlechtern funktioniert)
Na du sagst es schon "populärer" älter... leute haben sich mehr dran
gewöhnt.
Java stinkt in meinen Augen in so vielen hinsichten. Irgendwo gabs mal
schön zusammen gefasst 100 Gründe warum Java scheiße is. Google selbst
;-)
Ja, Java ist lange etabliert. Aber das muß man im historischen Kontext
sehen: "plattformübergreifend" war damals der letzte Schrei, während es
heute - auch und gerade für die Skriptsprachen - fast selbstverständlich
ist.
Die Popularität von Java beruht nicht darauf, daß es eine besonders gute
Sprache wäre, sondern vielmehr auf dem zeitlichen Vorsprung, mit dem die
damals vorhandene Nische besetzt wurde. Wenn es dann erst einmal genug
existierenden Code gibt, ist die langfristige Existenz der Sprache
gesichert. Genauso eroberte Microsoft damals den Markt, Windows
(3.0/3.1) wurde halt den Programmierern massiv schmackhaft gemacht, und
wenn es erst einmal Applikationen dafür gibt, etabliert sich auch ein
Betriebssystem.
Ob Python technisch besser ist, lasse ich mal dahin gestellt, denn Java
und Python sind eigentlich wie Äpfel und Birnen.
Elias schrieb:> Python zwingt so aber auch zu einem "sauberen Programmierstil". Die> Einrückungen sind da ja nicht nur Optik, sondern funktionsrelevant.
Gerade aber wenn man Funktionsblöcke zwischen Projekten hin&her kopiert
(wer recycelt denn nicht gerne) führt das leicht zu Störungen.
Wie heißt es so schön: "never rely on whitespace"
Ich will Python die Eignung für schnelle, einfache und performante
Lösungen nicht absprechen (ich verwende es ja auch, ist einfach sau
praktisch). Ich würde jetzt, aber kein Großprojekt damit entwickeln.
Ein, zwei Klicki-Bunti-Fenster sind so das Maximum was ich (mir mit)
Python zutrauen würde.
Elias schrieb:> Ja, man muss Strings z.B. nicht als solche definieren. Eine notwendige> Variablendeklaration sehe ich nun nicht als Hindernis an.> Kompliziert wirds erst dann, wenn Typenumwandlungen ins Spiel kommen.
Also egal wie man es betrachtet, man wird über die meisten "nicht
Standard" Variablen-deklarationen zumindest einen Moment nachdenken
müssen. Das spart man sich bei Python.
Aus Erfahrung kann ich sagen, dass Python deutlich schneller
"hingeschludert" werden kann und trotzdem wie erwartet funktioniert
(solange man die Einrückungen beachtet und sowas).
Elias schrieb:> Ja, Java und C++ sind sich schon irgendwie ähnlich, vielleicht ist das> auch ein Vorteil, weil man dann einfacher "wechseln" kann.
Was ich so aus der Java-Fraktion gesehen hab ist ein Wechsel eher die
Ausnahme als die Regel. Wenn man sich mal an Zeug wie GC gewöhnt hat,
dann gibt das auf C++ ein wahres Fest an Speicher-Müll.
Hi.
Wahrscheinlich werde ich mich für Java entscheiden.
Es ist für Adroid Apps meiner Meinung nach der zielführendste Weg.
Außerdem ist die Ähnlichkeit mit JS, ActionScript und was man sonst noch
für moderne Webprojekte braucht, am größten.
Mir kommt es übrigens nicht drauf an, möglichst eine wenig verbreitete
Programmiersprache zu nehmen, ich will nur nicht den 0815 PHP Weg gehen.
Ich lehne PHP aber auch nicht strikt ab. Als Ergänzung würde ich es auch
mit verwenden. Genauso wie Perl oder auch andere Programmiersprachen,
wenn es sich für ein Teilproblem sehr gut anbietet.
Es spricht nichts dagegen, mehrere Sprachen zu beherrschen, aber man
sollte sich meiner Meinung nach schon eine "Hauptsprache" suchen, die
man dann wirklich intensiv lernt.
Und da werde ich nun erst mal Java nehmen, da es die meißten
Überlappungen in die Bereiche hat, die ich abdecken möchte.
Ich habe mir nun mal den Netbeans herunter geladen.
Damit kann man sogar HTML5 und PHP machen. (Per Plugin auch Python)
Android Apps sind auch möglich.
NetBeans gibts auch für Linux, so dass der Umstieg auf Linux dann
leichter fällt.
Bei Python würde es sich komplizierter gestalten, sich eine
OS-unabhängige, aber einheitliche Entwicklungsumgebung zu schaffen.
Elias schrieb:> Bei Python würde es sich komplizierter gestalten, sich eine> OS-unabhängige, aber einheitliche Entwicklungsumgebung zu schaffen.
Texteditor?
Python is eine Skriptsprache....
Elias schrieb:> Es spricht nichts dagegen, mehrere Sprachen zu beherrschen, aber man> sollte sich meiner Meinung nach schon eine "Hauptsprache" suchen, die> man dann wirklich intensiv lernt.
Vielleicht hilft Dir ja das folgende Buch weiter:
http://books.google.de/books/about/Programming_language_choice.html?id=fZ1QAAAAMAAJ&redir_esc=y
Du findest darin auch einen Artikel von einer Marian Petre von der Open
University. Sie hat einmal in einer Feldstudie untersucht, was einen
Experten eigentlich von dem unterscheidet, was in solchen Arbeiten
typischerweise als naive programmer bezeichnet wird. Herausgekommen
ist, dass es nicht die eine oder andere Sprache ist, die einen Experten
zum Experten macht, sondern die Fähigkeit, extrem schnell zwischen
verschiedenen Paradigmen wechseln zu können, wobei auch gerne
verschiedene Paradigmen kombiniert werden. Ein wirklicher Experte wird
sich also nie auf eine Sprache festlegen lassen und Sprachen bevorzugen,
die möglichst viele Paradigmen abdecken können. Es kann also keinesfalls
schaden möglichst viele und d.h. insbesondere auch möglichst viele
unterschiedliche Sprachen zu lernen, gerne auch Exoten oder reine
Lehrsprachen wie etwa Forth, Lisp oder Prolog, bei denen die
Wahrscheinlichkeit, sie mal in einem realen Projekt einzusetzen,
heutzutage eher gering ist. Es sind die Konzepte und Modelle, die
dahinter stehen, die Paradigmen eben, auf die es ankommt. Wer die
verstanden hat, für den ist eine neue Sprache nicht mehr als einen neue
Syntax, also nicht viel mehr als ein paar neue Vokabeln.
Ich glaub, Eclipse ist weiter verbreitet als Netbeans. Wobei ich mich
seit Jahren für Eclipse begeistern möchte, und dann nehm ich doch wieder
emacs und ein build File...
Nur für Android nehm ich gelegentlich Eclipse. Wobei das ja quasi knapp
über Assembler-Niveau ist, wenn man mal Sachen wie phonegap benutzt hat.
Was mir an Python ganz gut gefällt, ist die Möglichkeit, es interaktiv
zu nutzen und auf die Weise mal einfach kurz was "live" auszuprobieren.
Sebastian schrieb:> Ja, Java ist lange etabliert. Aber das muß man im historischen Kontext> sehen: "plattformübergreifend" war damals der letzte Schrei, während es> heute - auch und gerade für die Skriptsprachen - fast selbstverständlich> ist.
Bei Java ist es das aber bis heute nicht. Plattformunabhängigkeit hat da
noch nie funktioniert. Die hat man aber einfach trotzdem gut vermarktet
und damit Java zum Hype gemacht.
Hannes Jaeger schrieb:> Java war schon etabliert, da gab es keine Hipster und keine Android> Apps.
Java hat sich erst durch die Hipster etabliert. Das waren aber keine
Android-Hipster, sondern die aus der Dotcom-Blase.
Max D. schrieb:> Was ich so aus der Java-Fraktion gesehen hab ist ein Wechsel eher die> Ausnahme als die Regel. Wenn man sich mal an Zeug wie GC gewöhnt hat,> dann gibt das auf C++ ein wahres Fest an Speicher-Müll.
Naja, die anderen Ressourcenlecks bemerken viele oft nicht. Denn Java
hat leider einen großen konzeptionellen Schwachpunkt in der Hinsicht.
Speicher ist ja nicht die einzige Ressource, die wieder freigegeben
werden muss. Es ist aber die einzige, um die sich der GC kümmert.
Wo du gerade was vom Umstieg auf Linux gesagt hast: Meiner Erfahrung
nach machen Java und Linux nicht mehr so wirklich Spaß. Python dagegen
ist auf Linux sehr geil zu benutzen. Bei Android siehts halt ganz anders
aus: Da kannst du mit Java Apps gescheit programmieren und mit Python
wirst du nicht wirklich glücklich. Ich finde beide Sprachen haben ihre
Vor- und Nachteile und beide haben ihre Berechtigung. Von daher
solltest du dir genau überlegen, worauf das was du programmierst mal
hauptsächlich laufen soll und danach entscheiden.
Irgendwie ist das alles ein bisschen so, als würde ein Schreiner fragen,
ob er sich Werkzeug von Hersteller a oder b kaufen soll. Und glaubt, die
Wahl des (richtigen) Werkzeug würde automatisch dazu führen, dass er
bessere Möbel baut und mehr Aufträge bekommt. Und dabei vergisst, dass
man nicht deswegen ein guter Handwerker ist, weil man Werkzeug eines
bestimmten Herstellers nutzt, sondern aufgrund zahlreicher anderer
(handwerklicher) Fähigkeiten.
Eine Programmiersprache ist nur Mittel zum Zweck. Also ein Werkzeug. Nur
weil man z.B. Java anderen Sprachen wie Python oder PHP vorzieht,
entsteht nicht automatisch besser Code oder gar bessere Programme /
Apps. Es sind die Konzepte und Paradigmen, die man verstanden haben
muss. Das macht einen guten Programmierer aus. Und nicht die Wahl einer
bestimmten Sprache.
Ich finde, A. H. (ah8) hat das in seinem Post sehr schön beschrieben.
Ich finde das ist die falsche herangehensweise. Eine Programmiersprache
zu lernen nur um sie zu können bringt nicht viel. Du musst den Spass am
Programmieren finden. :-)
Mir persönlich macht es zum Beispiel Spass kleine mathematische Probleme
zu lösen, wie z.B. sowas hier:
https://projecteuler.net
Eine App für sich selbst programmieren, die es so noch nicht gibt, ist
auch eine super Motivation.
Wichtig ist auch überhaupt erstmal programmieren zu lernen, die Sprache
ist dabei egal. Für viele Anfänger ist es gar nicht so einfach, große
Probleme in zu lösende Teilprobleme zu zerlegen.
Mein Rat wäre als Programmiersprache C#/.Net. Ist aber leider nur für
Windows. Da kann man dann relativ leicht Java, C/C++, Javascript und PHP
lernen. Zumindest sieht die Syntax ähnlich aus, wobei man nie den Fehler
machen darf, sich nicht über die Feinheiten und Unterschiede zu
informieren. Jemand der in C++ wie in C# programmiert, wird scheitern.
Elias schrieb:> Hi.>> Wahrscheinlich werde ich mich für Java entscheiden.> Es ist für Adroid Apps meiner Meinung nach der zielführendste Weg.> Außerdem ist die Ähnlichkeit mit JS, ActionScript und was man sonst noch> für moderne Webprojekte braucht, am größten.
ActionScript... Flash... Für was? Dazu gibt es spätestens seit HTML5
eigentlich keinen einzigen Grund mehr. Selbst dort, wo es mal häufig
genutzt wurde, z.B. bei Videos ist es obsolet. Youtube hat seit Anfang
des Jahres HTML5 als Voreinstellung für den Player, Netflix, Vimeo und
andere ebenso.
Java und JavaScript haben außer einer zum Teil an C angelehnten Syntax
nur vier Buchstaben gemeinsam ansonsten sind die Sprachen völlig
unterschiedlich.
U.a. "dynamische" Typisierung in JavaScript vs. statischer in Java oder
prototypenbasiert vs. klassenbasiert in Java. Zudem bietet JavaScript
drastisch mehr Möglichkeiten zur Metaprogrammierung als Java.
Gleichzeitig fehlt javascript aber auch die möglichkeit, interfaces zu
erstellen, und es besitzt keinen blockscope:
1
(function(){
2
x=1;
3
var x;
4
{var y=2}
5
console.log(x,y);
6
for(var i=0;i<2;i++)(function(j){
7
console.log(i,j);
8
setTimeout(function(k){
9
console.log(i,j,k);
10
},100,i);
11
}).call(this,i);
12
})();
13
console.log(window.x);
14
// ausgabe:
15
// 1 2
16
// 0 0
17
// 1 1
18
// undefined
19
// 2 0 0
20
// 2 1 1
Es gibt auch kein Multithreading, nur asynchrone callbacks und worker,
wobei sich worker keine ressourcen teilen können und nur mit events
textnachrichten versenden/empfangen.
In java kann man dafür keine funktionen mit variablen referenzieren, und
muss ein interface schreiben dass man als Anonyme classe oder lambda
verwendet, und dann kennt java nichteinmal einen closurescope, wie ihn
javascript besitzt.
Hallo Max,
Max D. schrieb:> Elias schrieb:>> Python zwingt so aber auch zu einem "sauberen Programmierstil". Die>> Einrückungen sind da ja nicht nur Optik, sondern funktionsrelevant.>> Gerade aber wenn man Funktionsblöcke zwischen Projekten hin&her kopiert> (wer recycelt denn nicht gerne) führt das leicht zu Störungen.
Wer "Funktionsblöcke zwischen Projekten hin&her kopiert", der hat den
Sinn von Modularisierung und Objektorientierung nicht verstanden.
> Ein, zwei Klicki-Bunti-Fenster sind so das Maximum was ich (mir mit)> Python zutrauen würde.
Sorry, aber nach Deiner oben zitierten Aussage würde ich Dir das auch
mit keiner anderen Sprache zutrauen.
Liebe Grüße,
Karl
Hallo Rolf,
Rolf Magnus schrieb:> Was mir an Python ganz gut gefällt, ist die Möglichkeit, es interaktiv> zu nutzen und auf die Weise mal einfach kurz was "live" auszuprobieren.
Kennst Du schon IPython [1]?
Liebe Grüße,
Karl
[1] http://ipython.org/
Hallo Elias,
Elias schrieb:> Vorteil von Java: Java auf kann verschiedenen Wegen auch genutzt werden,> um serverseitig dynamische Webseiten zu erzeugen.
Sowas will man ohnehin mit einer Template-Engine machen, und dabei tun
sich Java und Python ziemlich wenig.
> Und man ist mit der Programmiersprache näher am Thema JavaScript /> jQuery und Servlets dran, was durchaus von Vorteil ist.
Nein. Java ist genauso nah an Javascript und / oder jQuery wie Python.
Und der praktische Vorteil von Java-Servlets gegenüber Funktionen oder
Klassen in einem modernen Python-Webframework wie Bottle.py, Flask oder
Django hat sich mir bis dato nicht erschlossen.
Die Unterschiede zwischen diesen beiden Sprachen -- kompiliert versus
interpretiert, Typsicherheit mit deklarierten Typen versus dynamischer
Typisierung mit Autovivikation, ... -- wirst Du vermutlich wissen. Dann
weißt Du auch, daß das beides leistungsfähige, moderne Allround-Sprachen
sind, die weit über das Web hinaus angewendet werden können und werden.
Für mich persönlich ist Python das Mittel der Wahl. Für alles: Skripte,
Systemverwaltung, Automatisierung, aber auch kleine bis mittelgroße
GUI-Werkzeuge, Numbercrunching, Statistik, Datenvisualisierung ... und
wenn ich mal mehr Rechenpower brauche, hab' ich ja immer noch C, C++ und
Boost.Python zur beiderseitigen Integration von C++ und Python.
Andererseits ist Java ein Industriestandard und weit verbreitet. Wenn Du
später mal hauptberuflich Software entwickeln willst, ist es sicher
nicht verkehrt, Java zumindest rudimentär zu beherrschen und schon
einmal etwas damit gemacht zu haben. Und wenn die App-Entwicklung der
Primärziel ist, könnte Java ebenfalls die bessere Wahl sein.
Da beide Sprachen ziemlich unterschiedlich sind, muß es aber auch nicht
schaden, einfach beide zu lernen. Java ist dabei der deutlich
aufwändigere Teil; ein erfahrener Skriptsprachenentwickler kann Python
in einer Woche gut genug erlernen, um es praktisch zu benutzen, dazu
vielleicht noch ein oder zwei weitere Wochen für eines der oben
genannten Webframeworks. Für Java würde ich bis zum "produktiven
Stadium", je nach Vorkenntnissen und Zeitkontingent, eher mit drei bis
sechs Monaten rechnen.
HTH,
Karl
Python oder Java lernen?
Ich mache die komplexesten Web Programme mit PHP - geht super! Und
herrlich wie die Datenbank mit einfachstem Code die dynamischen Seiten
aufbaut. Ich wär doch bescheuert, wenn ich was komplizierteres nehmen
würde..
Ich würde mit PHP aber keine S7 von SIEMENS für einen Industrieprozess
programmieren. Da nimmt man z.B. Java. Vermutlich geht auch C++.
Überleg Dir was Du machen möchtest. Jede Aufgabe benötigt das richtige
Werkzeug. Und dann den einfachsten Weg gehen.
eine Leiche in einen Forum??
was für ein Blödsinn
die Zeit wandelt sich und ich bin jetzt grad mit exakt dieser Frage hier
aufgekreuzt und freue mich darüber, das auch jetzt noch Leute hierzu
schrieben, einfach weil die Zeit schreitet und die Eindrücke heute
andere sein können als noch vor 2, 3 Jahren
wen interessiert denn da dann der Threadersteller?
Axel schrieb:> die Eindrücke heute> andere sein können als noch vor 2, 3 Jahren
Quark, der Vergleich 'Python vs. Java' fällt heute genauso aus wie zu
Zeiten der Threaderstellung vor drei Jahren!
Das ist wie die Frage: "Soll ich mir einen Schlitz- oder
Kreuzschlitz-Schraubenzieher kaufen", die auch nur beantwortet werden
kann mit: "Auf jeden Fall einen Schlitzschraubenzieher, der passt auch
in Kreuzschlitze, wenn Du ihn etwas verkantest".
Es gibt kein Programmiersprache for die gilt "one size fits all".
Konzepte kann man leicht mit Python lernen, auch Objetorientirung und
Modularisierung und dann auf Java oder vergleichbare Schlachtschiffe
unzusteigen.
Disclaimer: Mit ...zieher sind auch alle Arten von ...drehern mit
eingeschlossen. Wir lassen niemanden zurück.