PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welche Programmier-Sprache und wo zu kaufen?


Rampage 2
2007-07-21, 17:22:25
Hi,

Also ich will bald mit dem Programmieren anfangen. Ein Bekannter von mir hat mir geraten, "Delphi" zu wählen. Das Problem ist, dass Delphi sehr teuer ist - weit jenseits meinem Budget - offenbar gibt es keine Versionen für Schüler und Studenten. Dann habe ich mich nach Visual Basic 6.0 (Microsoft?)umgeschaut - Nirgendwo ein Shop, wo ich mir das kaufen könnte.

Jetzt habe ich 2 Fragen:

1.) Welche Sprache würdet ihr mir emphelen? Ich habe noch nie in meinem Leben programmiert. Welche Sprache wäre einfacher für mich oder welche Sprache ist für mich sinnvoll?

2.) Wo kann man sich diese Sprachen bei erträglichem Preis (max. 200€) kaufen?

Thx for help im voraus

D4ve
2007-07-21, 17:36:44
Wozu kaufen? Gute Tools gibts für lau.
Java kann für den Einstieg recht sinnvoll sein, weil es einem an so mancher Stelle (speziell der Speicherverwaltung) Arbeit abnehmen kann. Das SDK gibts bei Sun zum Download, mit Eclipse und NetBeans gibts auch zwei recht brauchbare IDE's kostenlos (legal) im Netz. Und ein geeignetes Buch zum Einstieg gibts hier: http://www.galileocomputing.de/openbook/javainsel6/

C++ ist natürlich auch ne Idee und grade Visual C++ muss man sich nun nicht kaufen, da bietet Microsoft die sogenannte Visual C++ 2005 Express Edition, welche für den Einstieg ausreichend sein sollte, gratis zum download an.
http://www.microsoft.com/germany/msdn/vstudio/products/express/visualc/default.mspx

edit:
zu Delphi kann ich persönlich nix sagen, da ich damit bislang nicht gearbeitet habe (nur mit dem "Vorgänger" Pascal). Vielleicht gibts da von Borland auch einen non-kommerz-Compiler, aber das dürfte Google besser wissen.

Gast
2007-07-21, 17:40:29
Das hängt sehr davon ab, was du machen willst!

Ich würde Python empfehlen. Ist relativ flexibel und einfach zu lernen. Es ist natürlich kostenlos.
Lernen kann man aber mit jeder Sprache.

creave
2007-07-21, 18:02:09
Zum Thema "welche Sprache lernen" gibts hier im Board mehr als einen Thread, sogar nen relativ aktuellen ;)

du brauchst kein Geld in IDEs oder sonstige Software stecken, hol dir davon lieber ein, zwei gute Bücher zu deiner Sprache.

Pompos
2007-07-21, 18:05:55
Gibts da nicht ne OpenSource IDE für C#? Und das ganze dann mit dem kostenlosen Zeug von MS... informiere dich da mal.

Von Python würde ich dir abraten... ich finde es grauenvoll... bekomme da nichts zustande :(

Aber der Vorschlag mit Java ist auch nicht schlecht. Bekommst da alles kostenlos. Sogar Bücher ;)

Aber ganz wichtig zum Lernen ist, dass du dir ein schaffbares Ziel setzt.

Monger
2007-07-21, 18:16:27
Vielleicht sollte man erstmal damit anfangen was du NICHT lernen solltest:

- Pascal. Benutzt kein Schwein mehr, außer ein paar graumelierte Lehrer.
- VB bis zur Version 6. Die Unterstützung dafür wurde mittlerweile auch von MS eingestampft.
- Delphi. Hat zwar durchaus noch seine Berechtigung, aber nicht für einen Anfänger.
- C++ (ja, schlagt mich! :D ). Ist zwar nach wie vor Industriestandard, aber der typische Anfänger will heute meistens irgendwelche Anwender- oder Websoftware für den PC schreiben, und das geht mittlerweile mit anderen Sprachen schöner und leichter.


Empfehlenswert sind die üblichen Verdächtigen: Die .NET Welt, Java, Python, Ruby... alle haben ihre speziellen Stärken und Schwächen, aber alle sind modern, relativ leicht zu erlernen, sehr gut dokumentiert und mit viel Freeware supported.

Coda
2007-07-21, 19:03:59
Ich stimme dir was C++ angeht teilweise zu. Es kommt drauf an was er mal machen will.

So unschön ist C++ gar nicht, wenn man sich an gewisse Richtlinien hält und die richtigen Frameworks benützt.

Rampage 2
2007-07-21, 19:08:59
Also ich habe mir die "Microsoft Visual Basic 2005 Express Edition" bei MS runtergeladen, registriert und dann noch das Service Pack 1 drüber. Und bei GalileoComputing gibt's ja auch passende Bücher dafür. Was meint ihr? Gute Wahl?

Monger
2007-07-21, 19:21:34
Also ich habe mir die "Microsoft Visual Basic 2005 Express Edition" bei MS runtergeladen, registriert und dann noch das Service Pack 1 drüber. Und bei GalileoComputing gibt's ja auch passende Bücher dafür. Was meint ihr? Gute Wahl?

Ich gebe es als fanatischer Java-Jünger ja ungerne zu, aber seitdem MS die Express Versionen kostenlos rausgibt, ist Visual Studio für Einsteiger die beinahe perfekte Wahl: sehr simpel zu bedienen, aber auch gleichzeitig sehr mächtig. Etwas vergleichbares gibt es in der Java Welt nicht.

Hardwaretoaster
2007-07-21, 20:09:06
Ganz kurz, weil oben Delphi gefallen ist:
Es gibt 'ne kostenlose Version (bei 'ner Regristrierung): Turbo Delphi Explorer.

Coda
2007-07-21, 20:09:43
Hm, was ist mit Eclipse?

clm[k1]
2007-07-21, 20:50:51
Hm, was ist mit Eclipse?
Angesichts der Tatsache das Eclipse nicht mal nen gescheiten GUI-Designer hat: wohl kaum.

Und ich sage das ebenfalls als Java-Fanboy.
Denn offen gesagt, es ist schon etwas lästig für GUI-Sachen mit Swing immer Netbeans bemühen zu müssen.
Bei allem anderen ist Eclipse aber IMO besser als Netbeans.

Ich kenne zwar Visual Studio nicht, aber ich schätze mal, das es im Gegensatz zu Eclipse einen GUI-Designer hat ;)

Davon aber mal ganz abgesehen, würde ich aus einem anderen Grund zu Java raten: die Anwendungen laufen ohne weiteres auch unter allen anderen Betriebssystemen die eine JVM haben! (Wenn man auf MFC setzt, dann ist man an M$ Windows gefesselt - und die Anwender auch)


so long
clm[k1]

Monger
2007-07-21, 21:33:22
;5688072']
Davon aber mal ganz abgesehen, würde ich aus einem anderen Grund zu Java raten: die Anwendungen laufen ohne weiteres auch unter allen anderen Betriebssystemen die eine JVM haben! (Wenn man auf MFC setzt, dann ist man an M$ Windows gefesselt - und die Anwender auch)

Naja, also bis ein Programmieranfänger an kommerzielle Releases auf mehreren Plattformen denken kann, vergeht ein wenig Zeit! ;)

Gerade die Pseudo-Plattformunabhängigkeit von Java finde ich ein ganz schwaches Argument. Mono ist schließlich auch plattformunabhängig...

Coda
2007-07-21, 21:34:44
;5688072']Angesichts der Tatsache das Eclipse nicht mal nen gescheiten GUI-Designer hat: wohl kaum.
Gibt's da keine Plugins? Ich finde es am Anfang eh nicht so toll mit Designern zu arbeiten, weil man nicht weiß was eigentlich vor sich geht.

;5688072']Davon aber mal ganz abgesehen, würde ich aus einem anderen Grund zu Java raten: die Anwendungen laufen ohne weiteres auch unter allen anderen Betriebssystemen die eine JVM haben! (Wenn man auf MFC setzt, dann ist man an M$ Windows gefesselt - und die Anwender auch)
Es gibt auch platformunabhängige Toolkits für C++. MFC ist eh in keinem Fall eine gute Lösung.

Senior Sanchez
2007-07-21, 21:59:54
Gibt's da keine Plugins? Ich finde es am Anfang eh nicht so toll mit Designern zu arbeiten, weil man nicht weiß was eigentlich vor sich geht.

Doch gibts.
Aber ich selber (gut schon "etwas" erfahrener) schreibe GUI-Code nur noch per Hand. Damit bin ich schneller und der Code ist sauberer.

TheGamer
2007-07-21, 22:30:08
Dann habe ich mich nach Visual Basic 6.0 (Microsoft?)umgeschaut - Nirgendwo ein Shop, wo ich mir das kaufen könnte.


Lol irgendwie Verständlich das es keine MS Produkte aus den 90er Jahren zu kaufen gibt mehr

tokugawa
2007-07-22, 02:23:54
Hi,

Also ich will bald mit dem Programmieren anfangen. Ein Bekannter von mir hat mir geraten, "Delphi" zu wählen. Das Problem ist, dass Delphi sehr teuer ist - weit jenseits meinem Budget - offenbar gibt es keine Versionen für Schüler und Studenten. Dann habe ich mich nach Visual Basic 6.0 (Microsoft?)umgeschaut - Nirgendwo ein Shop, wo ich mir das kaufen könnte.

Jetzt habe ich 2 Fragen:

1.) Welche Sprache würdet ihr mir emphelen? Ich habe noch nie in meinem Leben programmiert. Welche Sprache wäre einfacher für mich oder welche Sprache ist für mich sinnvoll?

2.) Wo kann man sich diese Sprachen bei erträglichem Preis (max. 200€) kaufen?

Thx for help im voraus

Turbo Delphi ist gratis und für Anfängeransprüche vollkommen ausreichend:
http://www.turboexplorer.com/

Auch Microsoft hat für die hauseigenen diversen Programmiersprachen des Visual Studio Pakets (C#, C++, Visual Basic) sogenannte "Express"-Editionen, die ebenfalls gratis sind:
http://www.microsoft.com/germany/msdn/vstudio/products/express/default.mspx

Eine gute IDE ist für einen Anfänger das A und O. Kommandozeilenrumf*ckerei schadet nur der Motivation.

Gast
2007-07-22, 02:43:43
Jetzt habe ich 2 Fragen:

1.) Welche Sprache würdet ihr mir emphelen? Ich habe noch nie in meinem Leben programmiert. Welche Sprache wäre einfacher für mich oder welche Sprache ist für mich sinnvoll?

2.) Wo kann man sich diese Sprachen bei erträglichem Preis (max. 200€) kaufen?

Thx for help im voraus

Mein Tip.

Fang erstmal mit einer Scriptsprache z.B. Python an.
Ein großer Vorteil von Python ist auch, daß der Compiler, entsprechnde IDEs und Co nichts kosten.


Du sparst also bares Geld.


Wenn du dann deine erste Schritte mit Python hinter dir hast und immer noch am Programmieren interessiert bist, dann kannst du mit C++ und Java weitermachen.

Da gibt es auch mehr als genug gute kostenlose Compiler und Entwicklerumgebungen.
Für Java könntest du z.b. Eclipse nehmen.



Delphi oder Visual Basic lohnt sich eigentlich nicht mehr.
Delphi kostet wie du selbst bemerkt hast, nen Haufen Geld und läßt sich im Großen und ganzen auch nur unter Windows benutzen.
Mit Visual Basic hast du ähnliche Probleme.


Die Zeiten von Delphi sind IMO vorbei und VB wird nur noch durch die Verbreitung von Windows am Leben erhalten, bis die Tage von VB aber gezählt sind, ist auch nur noch eine Frage der Zeit.
Schließlich schaut die Windows Welt inzwischen auf C#.

Gast
2007-07-22, 02:48:07
Java kann man überall benutzen, das ist der größte Vorteil.


Erst Recht auf dem Handy, da geht ohne Java fast nix.

del_4901
2007-07-22, 07:27:47
Java kann man überall benutzen, das ist der größte Vorteil.


Erst Recht auf dem Handy, da geht ohne Java fast nix.

Sagt einer, der sich noch nie mit den Java-Handy SDKs rumschlagen musste.

Senior Sanchez
2007-07-22, 10:02:20
Sagt einer, der sich noch nie mit den Java-Handy SDKs rumschlagen musste.

bzw. auch noch nie Symbian oder Windows Mobile benutzt hat.

rotalever
2007-07-22, 15:11:44
Auf diesen Nokias mit dem Linux betriebssystem kann man doch wohl sogar Python drauf laufen lassen? Und ansonsten gibt es da ja auch noch den jython Interpreter.

clm[k1]
2007-07-22, 16:01:55
Naja, also bis ein Programmieranfänger an kommerzielle Releases auf mehreren Plattformen denken kann, vergeht ein wenig Zeit! ;)

Schlimm genug - ich befürchte, wenn sich so jemand einmal auf Windows eingeschossen hat, wird er kaum dazu zu bewegen sein, auch für andere Betriebssysteme zu releasen, selbst wenn es möglich wäre.


Gerade die Pseudo-Plattformunabhängigkeit von Java finde ich ein ganz schwaches Argument. Mono ist schließlich auch plattformunabhängig...
Java-Programme mit Swing-Oberfläche laufen auch auf jedem OS für das es eine JVM gibt. Mono hingt in der Beziehung .Net ja um einiges hinterher.


Gibt's da keine Plugins? Ich finde es am Anfang eh nicht so toll mit Designern zu arbeiten, weil man nicht weiß was eigentlich vor sich geht.

Es gibt eins - aber das ist mehr ein Krampf im Hintern.
Der Netbeans GUI-Designer ist IMO wirklich einen Blick wert, und man kann eigentlich auch gut nachvollziehen was vor sich geht.


Es gibt auch platformunabhängige Toolkits für C++. MFC ist eh in keinem Fall eine gute Lösung.

Ja, aber welcher Neuling benutzt die schon?
Die siehst ja selbst: sobald "C++" fällt, ist meistens auch von VS die rede - und da kommt garantiert kein platformunabhängiges Toolkit zum Einsatz.

Gerade Neulinge wollen sich ja nach Möglichkeit nur eine GUI zusammen klicken und so wenig wie möglich im Code machen.


just my 2 cent
clm[k1]

govou
2007-07-22, 17:02:20
Mache alles, aber fange bloß nicht mit Delphi oder (foo)Basic an. Die Syntax beider Sprachen ist imo einfach nur ekelhaft ;(.

Falls du es mit C++ versuchen willst: ich hätte noch zwei sehr gute Anfängerbücher inkl. Entwicklungsumgebung hier, einfach PM an mich ;).
Es ist meiner Meinung nach nur wichtig, dass du eine Sprache lernst, mit der du lernst gängige und wichtige Konzepte der Programmierung zu verstehen. (OOP, Polymorphie usw.). In C++ kannst du erstmal prozedual Programmieren lernen, um einfache Dinge wie Bedingungen, Schleifen, Funktionen etc. zu verstehen und dann mit der OOP anfangen. (Dieses Vorgehen wäre auch mit Java möglich.)

Monger
2007-07-22, 17:26:23
;5689830']Schlimm genug - ich befürchte, wenn sich so jemand einmal auf Windows eingeschossen hat, wird er kaum dazu zu bewegen sein, auch für andere Betriebssysteme zu releasen, selbst wenn es möglich wäre.

Na und? ;)
Windows ist nunmal immer noch mit deutlichem Abstand absoluter Marktführer. Wollen wir hier jemanden das programmieren beibringen, oder einen Kreuzzug führen? ;)


Java-Programme mit Swing-Oberfläche laufen auch auf jedem OS für das es eine JVM gibt. Mono hingt in der Beziehung .Net ja um einiges hinterher.

Nur solange man nicht irgendwas komplexes macht. Schon spätestens wenn man Umgebungsvariablen verwendet ist Sense.

Coda
2007-07-22, 17:52:24
;5689830']Die siehst ja selbst: sobald "C++" fällt, ist meistens auch von VS die rede - und da kommt garantiert kein platformunabhängiges Toolkit zum Einsatz.
Also ich benütze und drücke überall Qt falls bezahlbar oder wxWidgets als Toolkit für C++ durch - auch unter Windows/Visual Studio.

MFC wird auch zum Glück immer unbeliebter.

clm[k1]
2007-07-22, 18:30:25
Na und? ;)
Windows ist nunmal immer noch mit deutlichem Abstand absoluter Marktführer. Wollen wir hier jemanden das programmieren beibringen, oder einen Kreuzzug führen? ;)

Naja, Markführer hin oder her - ich verwende kein Windows. Deswegen hab ich quasi ein persönliches Interesse daran, die Leute dazu zu bewegen auch anderen Betriebssysteme zu berücksichtigen.

Wäre ja denkbar, das Rampage 2 irgendwann mal ein Tool programmiert, was ich gerne benutzen würde - dann wäre es ziemlich blöd, wenn es das dann nur für Windows gäbe. ;)


so long
clm[k1]

Gast
2007-07-22, 19:02:05
Sagt einer, der sich noch nie mit den Java-Handy SDKs rumschlagen musste.

Blödsinn, natürlich habe ich schon mit J2ME programmiert.
Das geht wunderbar.

Aber wenn du mit Objekt Orientierten Programmiersprachen überfordert bist, dann kann ich auch nichts dafür.

Gast
2007-07-22, 19:03:34
bzw. auch noch nie Symbian oder Windows Mobile benutzt hat.


Windows Mobile ist Dreck.
Und Symbian nunja, es läuft halt nur auf ganz wenigen Handys und die Support Libs darf man suchen.

Bei J2ME hat man alles unte reinem Hut und nahzu jedes Handy kann damit umgehen, im Gegensatz zu Symbian und Co.

Gast
2007-07-22, 19:04:26
Auf diesen Nokias mit dem Linux betriebssystem kann man doch wohl sogar Python drauf laufen lassen?

Das N800 ist aber kein Handy sondern ein Internet Tablet ohne Handy Funktion!

Du redest also total am Thema vorbei.

TheGamer
2007-07-22, 19:07:51
Aber wenn du mit Objekt Orientierten Programmiersprachen überfordert bist, dann kann ich auch nichts dafür.

Genau durch solche Aussagen machen sich Gäste unbeliebt und im vorliegenden Fall kann mich dich aufgrund dieser Aussage im folgenden getrost ignorieren.

Gast
2007-07-22, 20:08:14
Genau durch solche Aussagen machen sich Gäste unbeliebt und im vorliegenden Fall kann mich dich aufgrund dieser Aussage im folgenden getrost ignorieren.

Was soll das?
Das AlphaTier hat schließlich angefangen, gerade weil ich Gast bin, wie bitteschön will es dann wissen, ob ich mit J2ME je gearbeitet habe.

Ne sorry, aber wer austeilt der muß auch einstecken.

Xmas
2007-07-22, 21:05:02
Windows Mobile ist Dreck.
Und Symbian nunja, es läuft halt nur auf ganz wenigen Handys und die Support Libs darf man suchen.
Symbian OS dürfte wohl immer noch das am weitesten verbreitete Smartphone-OS sein.

Bei J2ME hat man alles unte reinem Hut und nahzu jedes Handy kann damit umgehen, im Gegensatz zu Symbian und Co.
Wenn es allerdings um die Unterstützung der einzelnen APIs geht, hat man wieder Unterschiede von Handy zu Handy.

Das N800 ist aber kein Handy sondern ein Internet Tablet ohne Handy Funktion!
Python gibts für alle Series-60-Modelle von Nokia.



Ansonsten bitte alle ein wenig locker bleiben. Die beste Programmiersprache gibt es nicht, und ein erhöhter Blutdruck darüber lohnt sich nicht. ;)

Gast
2007-07-22, 21:13:25
Symbian OS dürfte wohl immer noch das am weitesten verbreitete Smartphone-OS sein.


Nur weil etwas in Prozenz gemessen die höchste Verbreitung hat,
kann man es noch lange nicht überlall nutzen.


Was bringt dir also eine Verbreitung von z.B. 60 % wenn du für J2M2 einen Markt mit 99 % Abdeckung erreichen kannst?



Wenn es allerdings um die Unterstützung der einzelnen APIs geht, hat man wieder Unterschiede von Handy zu Handy.

Das ist zwar richtig, aber in der Regel meist nur zeitlich mit erscheinen der APIs bedingt.
D.h. mit jedem neuen Handymodell unterstützt jedes neue Handy mehr JSR APIs als das Vorgängermodell.
Und viele JSR werden, wenn sie es mal in eine Handy Serie geschaft haben, nicht mehr daraus gestrichen.





Python gibts für alle Series-60-Modelle von Nokia.

Siehe oben.

Gast
2007-07-22, 21:14:25
Python gibts für alle Series-60-Modelle von Nokia.


Außerdem bezog ich mich hier auf Linux und nicht auf Python.

Und Linux gibt es nur auf dem N800 oder 770,
was beides aber keine Handys sind.

The_Invisible
2007-07-22, 22:12:31
Na und? ;)
Windows ist nunmal immer noch mit deutlichem Abstand absoluter Marktführer. Wollen wir hier jemanden das programmieren beibringen, oder einen Kreuzzug führen? ;)

was ich allerdings sehr schade finde :(

solange man nicht gerade high performance anwendungen schreibt oder spezielle libs benötigt kann man eigentlich ganz einfach multi os anwendungen schreiben.

aber klar, der programmierer ist auch ein gewohnheitstier, oder auch: was der bauer nicht kennt frisst er nicht

mfg

tokugawa
2007-07-22, 23:14:50
Auf diesen Nokias mit dem Linux betriebssystem kann man doch wohl sogar Python drauf laufen lassen? Und ansonsten gibt es da ja auch noch den jython Interpreter.

Diese Nokias haben nicht Linux (das hat nur dieses Webpad-Ding, 770 und N800), sondern Symbian OS mit der Oberfläche Series 60. Dort gibt's einen Python-Interpreter.

;5689830']
Ja, aber welcher Neuling benutzt die schon?
Die siehst ja selbst: sobald "C++" fällt, ist meistens auch von VS die rede - und da kommt garantiert kein platformunabhängiges Toolkit zum Einsatz.


Dann lass dir mal gesagt sein dass Konsolenentwicklung für multiple Plattformen (inkludiert Sony und Nintendo-Plattformen) ebenfalls über Visual Studio funktionieren kann, bzw. das eine im Westen (in Japan ist eher CodeWarrior verbreitet, zumindest bei Nintendo-Plattformen) sehr beliebte Art ist, zu entwickeln. Visual Studio ist ja sehr gut erweiterbar, und Third- sowie auch First-Party-Toolchain-Provider für Konsolen setzen sehr gerne auf VS-Integration. Also plattformabhängiges Toolkit + Visual Studio ist sehr wohl Realität.


Aber ich versteh nicht was das mit Plattformunabhängigkeit soll? Daran würd ich als Anfänger schon mal gar nicht denken. Das ist wie wenn man ein Gebäude baut indem man mit dem obersten Geschoß anfängt, und dann jedes Stockwerk darunter unten dran baut - und irgendwann das Gebäude umfällt.

Ob Windows oder Linux oder Schmafu-OS ist absolut irrelevant im Zusammenhang mit dem Wort "Anfänger".

Lieber von unten beginnen, mit dem Fundament - Plattformunabhängiges Programmieren ist eins der oberen Stockwerke...

Rampage 2
2007-07-23, 13:03:45
Also ich habe mich endgültig entschlossen MS Visual Studio zu benutzen - die restlichen Express-Editions werde ich mir in den folgenden Tagen ebenfalls runterladen. Und ja, ich werde mich nur auf Windows konzentrieren, da dies weniger kompliziert, berechenbarer, einfach und schneller ist. Sobald ich fähig bin fortgeschrittene Programme zu schreiben, kann ich ja erneut hier einen Thread aufstellen und Fragen über Programmiersprachen für andere Betriebssysteme aufstellen;)

Thx, R2

Coda
2007-07-23, 13:20:40
Also ich habe mich endgültig entschlossen MS Visual Studio zu benutzen - die restlichen Express-Editions werde ich mir in den folgenden Tagen ebenfalls runterladen.
Das ergibt keinen Sinn. Visual Studio ist der Oberbegriff für alle Express-Varianten. Welcher Sprache denn nun?

Xmas
2007-07-23, 14:37:25
Nur weil etwas in Prozenz gemessen die höchste Verbreitung hat,
kann man es noch lange nicht überlall nutzen.


Was bringt dir also eine Verbreitung von z.B. 60 % wenn du für J2M2 einen Markt mit 99 % Abdeckung erreichen kannst?
Ich wollte nur deine Aussagen, Symbian liefe "nur auf ganz wenigen Handys" und "da geht ohne Java fast nix" richtigstellen. Abgesehen davon halte ich den Schritt von J2SE zu J2ME für ebenso groß wie den von J2SE zu C#/.Net.

Wenn es um anspruchsvolle Anwendungen geht die viel Rechenleistung oder Speicher brauchen, kommst du mit J2ME schnell an die Grenzen. Dort hat native Software deutliche Vorteile.

Das ist zwar richtig, aber in der Regel meist nur zeitlich mit erscheinen der APIs bedingt.
D.h. mit jedem neuen Handymodell unterstützt jedes neue Handy mehr JSR APIs als das Vorgängermodell.
Und viele JSR werden, wenn sie es mal in eine Handy Serie geschaft haben, nicht mehr daraus gestrichen.
Was in Zukunft ist hilft mir wenig wenn ich jetzt eine Anwendung schreiben will die eine API mit aktuell geringer Unterstützung voraussetzt. Um dein Beispiel von oben aufzugreifen, für die Grundfunktionen hast du vielleicht 99% Abdeckung, für alles was darüber hinaus geht nicht.


Außerdem bezog ich mich hier auf Linux und nicht auf Python.

Und Linux gibt es nur auf dem N800 oder 770,
was beides aber keine Handys sind.
Schön, dann meinte rotalever vielleicht Symbian statt Linux. Es geht in diesem Thread ja nicht um Handys sondern um Programmiersprachen.

Monger
2007-07-23, 17:45:55
Wenn es um anspruchsvolle Anwendungen geht die viel Rechenleistung oder Speicher brauchen, kommst du mit J2ME schnell an die Grenzen. Dort hat native Software deutliche Vorteile.

Mal abgesehen davon dass das J2ME Framework auch alles andere als umfangreich ist - afaik unterscheiden sich die JVM Implementierungen von Gerät zu Gerät teilweise deutlich. Viele sparen sich z.B. wohl den Garbage Collector, was einen logischerweise zu einem ziemlich starren Design zwingt - und dann braucht man auch kein Java.

Gast
2007-07-23, 22:44:24
Da wir im Laufe dieser Diskussion (wie in allen anderen Threads mit der gleichen Fragestellung) festgestellt haben, dass es die Programmiersprache nicht gibt, musst du eine andere Vorgehensweise wählen. Die richtige Programmiersprache wählt man nicht nach der Syntax, sondern nach dem Anwendungszweck aus.

Möchtest du für das Windows-Betriebssystem Programme für die graphische Benutzeroberfläche schreiben, so führt praktisch kein Weg an Microsofts Visual Studio vorbei. Sofern du keine speziellen Dinge wie Gruppenentwicklung oder Server benötigst, erhältst du mit den Express Editionen alles, was ein Programmierer braucht. Und das kostenlos.

http://www.microsoft.com/germany/msdn/vstudio/products/express/download.mspx

Einem Anfänger würde ich heutzutage zu C# raten.

Gast
2007-07-23, 23:47:13
Das alle hier im forum C++Java und Konsorten empfehlen wundert nicht,
aber zum lernen ?
Muss man viel zu viel erstmal schlucken, da c++ usw über Jahre gewachsen sind bleiben manche Reglungen der Syntax erstmal unklar (d.h. in den Lehrbüchern wimmelt es von "wird später erklärt").
Ich rate dir zu Purebasic gibs für Windows,Linux,Mac 79,- eu (glaub ich).
Ich progge gern grafische Demos oder kleine Spiele, obwohl PB mehr auf Apps ausgelegt ist, bin ich echt begeistert was ich jetzt hinzaubern kann.
Leider hat sich c++ als Mainstream durchgesetzt und auf dem Arbeitsmarkt ist es das ein und alles :-(

govou
2007-07-24, 14:28:37
Das alle hier im forum C++Java und Konsorten empfehlen wundert nicht,
aber zum lernen ?
Muss man viel zu viel erstmal schlucken, da c++ usw über Jahre gewachsen sind bleiben manche Reglungen der Syntax erstmal unklar (d.h. in den Lehrbüchern wimmelt es von "wird später erklärt").
Ich rate dir zu Purebasic gibs für Windows,Linux,Mac 79,- eu (glaub ich).
Ich progge gern grafische Demos oder kleine Spiele, obwohl PB mehr auf Apps ausgelegt ist, bin ich echt begeistert was ich jetzt hinzaubern kann.
Leider hat sich c++ als Mainstream durchgesetzt und auf dem Arbeitsmarkt ist es das ein und alles :-(
Wird wohl seine Gründe haben, dass sich bestimmte Sprachen viel stärker durchgesetzt haben als andere.

[x] gegen *Basic (Platzhalter, kein Pointer!)

Monger
2007-07-24, 15:05:17
Das alle hier im forum C++Java und Konsorten empfehlen wundert nicht,
aber zum lernen ?

Das Problem ist, dass viele Sprachen nur auf den ersten Blick einfach sind. Das hat mich in meiner Jugend auch mehrmals scheitern lassen, weil sich ein paar Schleifen und Ifs zusammenzuschustern ist ja alles schön und gut, aber um wirklich große Anwendungen zu programmieren, ist das viel zu schwach.


Sieh es mal so: "SOS" morsen kann jeder. Das Morse-Alphabet hat die denkbar simpelste Syntax, diese "Sprache" zu erlernen ist nicht sonderlich kompliziert. Aufwendig wird es erst dann, wenn man diese Sprache für irgendwas sinnvolles verwenden will.
Und gemessen an dem was man damit tun kann, sind Java und C# nun wirklich sehr einfach zu erlernen.

Necrotic
2007-07-24, 22:52:41
Für den Anfang kann ich eigentlich nur python empfehlen.
Der code is einfach gehalten und man hat sehr schnell Erfolge.
Damit kannst du auch programmieren was du willst. Sollte irgendwann python nicht mehr ausreichen, was sicher schon mal bei jemanden vorkam, kannste mit c++ weiter machen. Auch kannst du python und c++ kombinieren.
Auch läuft python auf allen üblichen Betriebsystemen und ist völlig kostenlos.

Senior Sanchez
2007-07-25, 00:10:16
Ich fand python fürchterlich mit der Einrückgeschichte, aber das ist sicherlich ne Gewohnheitsfrage.

rotalever
2007-07-25, 19:26:26
Ich fand python fürchterlich mit der Einrückgeschichte, aber das ist sicherlich ne Gewohnheitsfrage.
Dafür gewöhnt man sich aber keinen schlechten Stil an. Eigentlich stört es nicht wirklich. Worauf man aufpassen sollte ist tabs und Leerzeichen nicht zu mischen. Also entweder immer mit Leerzeichen einrücken oder mit Tabs. Das fasst Python nämlich unterschiedlich auf, auch wenn es im Editor normal aussieht.

The_Invisible
2007-07-25, 19:44:25
Dafür gewöhnt man sich aber keinen schlechten Stil an. Eigentlich stört es nicht wirklich. Worauf man aufpassen sollte ist tabs und Leerzeichen nicht zu mischen. Also entweder immer mit Leerzeichen einrücken oder mit Tabs. Das fasst Python nämlich unterschiedlich auf, auch wenn es im Editor normal aussieht.

will nicht wissen was mich diese sache in der shell schon nerven gekostet hat.

ansonsten eine schöne sprache da sie durch und durch auf objekte aufbaut. die nächste sinnvolle sprache wäre dann C#/Java, da kommen auch nochmal viele neue elemente wie namespaces, datentypen, modifizierer usw dazu

mfg

Senior Sanchez
2007-07-25, 20:51:29
will nicht wissen was mich diese sache in der shell schon nerven gekostet hat.

eben genau das.
Ich mag keine Sprache die mir vorschreibt, wie ich meinen Quelltext zu formatieren habe.

Dimitrij
2007-07-25, 21:04:34
Die ganze Palette an Objekt Orientierter Programmierung hast du auch schon bei C++. (Klassen, Vererbung, Namensräume, usw.)
Java/C# sind halt die logische Fortsetzung. Da werden die Programme halt noch etwas "robuster" da du dir nix mehr erlauben kannst. Dann schlägt gleich die VM zu in der das Programm läuft. Das kann manchmal echt nervig sein. ;)

mbee
2007-07-25, 21:06:40
Blödsinn, natürlich habe ich schon mit J2ME programmiert.
Das geht wunderbar.

Aber wenn du mit Objekt Orientierten Programmiersprachen überfordert bist, dann kann ich auch nichts dafür.

Aha, für wie viele Handy-Modelle ist die Anwendung denn zertifiziert? Ich stecke da zwar selbst nicht drin, habe in einem Projekt allerdings einmal mitbekommen, was für ein Heidenaufwand das ganze z.T. ist, wenn es entsprechend weit "gestreut" werden soll (Spiel).

Senior Sanchez
2007-07-25, 21:20:37
Die ganze Palette an Objekt Orientierter Programmierung hast du auch schon bei C++. (Klassen, Vererbung, Namensräume, usw.)
Java/C# sind halt die logische Fortsetzung. Da werden die Programme halt noch etwas "robuster" da du dir nix mehr erlauben kannst. Dann schlägt gleich die VM zu in der das Programm läuft. Das kann manchmal echt nervig sein. ;)

Ehm, OO mäßig ist C++ nen ziemlicher Eigenbrödler. Java basiert aus OO-Sicht auf Objective-C, nicht auf C++ und kann somit keine Fortsetzung von C++ sein ;)

Aber was willst du dir denn erlauben? Und wie soll da die VM zuschlagen? Also ehrlich gesagt habe ich, wenn es Fehler gibt, semantische Fehler und das die VM wirklich mal nen Problem hat (StackOverflow oder OutOfMemory) kommt doch relativ selten vor. Dann musst du etwas falsch machen, wenn die Interventionen der VM nervig sein sollen.

Monger
2007-07-25, 21:28:35
Aber was willst du dir denn erlauben? Und wie soll da die VM zuschlagen? Also ehrlich gesagt habe ich, wenn es Fehler gibt, semantische Fehler und das die VM wirklich mal nen Problem hat (StackOverflow oder OutOfMemory) kommt doch relativ selten vor. Dann musst du etwas falsch machen, wenn die Interventionen der VM nervig sein sollen.

Wo wir gerade dabei sind: wie handhabt C++ eigentlich Exception Handling?

Da müssen ja wohl alle Exceptions innerhalb des Programms gefangen werden (was ja eigentlich auch so sein sollte), weil eine VM außenrum die das tun könnte, gibt es ja nicht.

Senior Sanchez
2007-07-25, 21:32:21
Wo wir gerade dabei sind: wie handhabt C++ eigentlich Exception Handling?

Da müssen ja wohl alle Exceptions innerhalb des Programms gefangen werden (was ja eigentlich auch so sein sollte), weil eine VM außenrum die das tun könnte, gibt es ja nicht.

Ich bin leider nicht wirklich firm in C++, aber ich denke ja, das musste direkt im Programm alles abfangen.

Coda
2007-07-25, 21:50:48
Dann bekommst halt die übliche Fehlermeldung von Windows dass das Programm abgeschmiert sei.

govou
2007-08-05, 14:23:57
Wird wohl seine Gründe haben, dass sich bestimmte Sprachen viel stärker durchgesetzt haben als andere.

[x] gegen *Basic (Platzhalter, kein Pointer!)Ich muss berufsbedingt RealBasic lernen ;(. Sry4Offtopic

Gast
2007-08-05, 19:59:46
Weil's gerade in den Thread passt: Kann mir jemand mal die beste kostenlose Java IDE nennen?

govou
2007-08-05, 20:08:33
Weil's gerade in den Thread passt: Kann mir jemand mal die beste kostenlose Java IDE nennen?
Imo Eclipse.

Gast
2007-08-06, 10:36:31
Netbeans ist auch kostenlos, so weit ich weiß.

Beginnen sollte man IMO aber mit C und dann C++. Wenn man beides mal gemacht hat, lernt man erst C# (oder Java, wobei Java etwas komplizierter ist) zu schätzen. ;)

del_4901
2007-08-06, 12:33:29
Netbeans ist auch kostenlos, so weit ich weiß.

Beginnen sollte man IMO aber mit C und dann C++. Wenn man beides mal gemacht hat, lernt man erst C# (oder Java, wobei Java etwas komplizierter ist) zu schätzen. ;)

Ok, bei der Einstellung bin ich dafür das man mit Haskell beginnt!

Matrix316
2007-08-06, 19:11:14
Immer gleich die Extreme - was auch immer Haskell ist. Zumindest sollte man mal wissen, was ein Zeiger ist. ;) Wie Funktionen aufgebaut sind, die Basics halt.

Monger
2007-08-06, 19:43:20
Immer gleich die Extreme - was auch immer Haskell ist. Zumindest sollte man mal wissen, was ein Zeiger ist. ;) Wie Funktionen aufgebaut sind, die Basics halt.

Nein, eben nicht. Gerade Zeiger sind absolut sprachspezifisch. Kaum eine andere Sprache als C/C++ kennt sie überhaupt. Genauso wie Präcompileranweisungen mittlerweile überholt sind, braucht es einen Java-Neuling nicht zu interessieren, was Call-By-Reference/Call-By-Value ursprünglich mal bedeutet hat.

Wenn wir da anfangen, können wir auch gleich jedem Anfänger Prolog und Assembler aufs Auge drücken. Technologien mit denen man nie in Berührung kommt, muss man auch nicht zwingend kennen.

Xmas
2007-08-07, 14:45:04
Nein, eben nicht. Gerade Zeiger sind absolut sprachspezifisch. Kaum eine andere Sprache als C/C++ kennt sie überhaupt. Genauso wie Präcompileranweisungen mittlerweile überholt sind, braucht es einen Java-Neuling nicht zu interessieren, was Call-By-Reference/Call-By-Value ursprünglich mal bedeutet hat.
Referenzen in höheren Sprachen sind auch nichts anderes als sichere Zeiger. Es trägt durchaus zum Verständnis bei wenn man weiß was unter der Haube passiert. Dazu gehört auch die Speicherorganisation, was Heap und Stack sind, wie Speicher allokiert wird, usw.
Und ein Java-Neuling muss zwar nicht die Unterschiede kennen, dennoch muss er wissen wie Java Parameter übergibt (das gilt ebenso für sämtliche anderen Sprachen). C# kennt zudem auch CbR.

Technologien mit denen man nie in Berührung kommt, muss man auch nicht zwingend kennen.
Allerdings kommt man auch in höheren Sprachen häufig nicht ganz um Low-Level-Wissen herum, wenn man effizient programmieren möchte.

Xanatos
2007-08-07, 14:51:38
Ich muss berufsbedingt RealBasic lernen ;(. Sry4Offtopic
Das haste nach 10 Minuten drauf:D

Monger
2007-08-07, 15:04:31
Referenzen in höheren Sprachen sind auch nichts anderes als sichere Zeiger.

Referenzen haben etwas mit indirekter Adressierung zu tun. Unter Java gibt es sowas nicht. Was dort als "Referenz" bezeichnet wird, ist nichts anderes als die Nummer des Objekts auf dem Objekt-Stack.
Wie die Speicherverwaltung darunter aussieht, ist aus Sicht des Programms und des Entwicklers gar nicht erkennbar, und ist je nach Implementierung der JVM und des Betriebssystems unterschiedlich.
Tu doch nicht so, als wenn irgendein Anwendungsentwickler sich wirklich bewusst darüber wäre, wie unten dran die Speicherverwaltung arbeitet!
Das ist schon auf Betriebssystemebene nicht ganz einfach zu verstehen.



Und ein Java-Neuling muss zwar nicht die Unterschiede kennen, dennoch muss er wissen wie Java Parameter übergibt (das gilt ebenso für sämtliche anderen Sprachen). C# kennt zudem auch CbR.

Für einen Java Neuling ist es besser, wenn er den Unterschied gar nicht kennt. Jedes Objekt hat eine Nummer, und Übergabeparameter werden grundsätzlich kopiert. Punkt. Einfach und einleuchtend.
Andere Sprachen bringen natürlich auch andere Besonderheiten mit, aber das sind dann Kapitel die man jeweils extra lernen muss. So wie C++ mit Referenzen umgeht, ist auf jeden Fall eine Spezialität von C++, und nicht etwa eine Grundlage aller modernen Sprachen.


Allerdings kommt man auch in höheren Sprachen häufig nicht ganz um Low-Level-Wissen herum, wenn man effizient programmieren möchte.
Gib mal bitte für Java ein Beispiel. Da bin ich nämlich mal sehr gespannt.

Xmas
2007-08-07, 15:46:17
Referenzen haben etwas mit indirekter Adressierung zu tun. Unter Java gibt es sowas nicht. Was dort als "Referenz" bezeichnet wird, ist nichts anderes als die Nummer des Objekts auf dem Objekt-Stack.
Was effektiv eine Adresse ist (und normalerweise sowieso als direkte Speicheradresse implementiert). Es geht bei Zeigern/Referenzen ja immer nur um das Konzept "Nummer zeigt auf Ort im Speicher". Eigentlich kinderleicht, und daher auch in C/C++ nur eine Randerwähnung wert...

Wie die Speicherverwaltung darunter aussieht, ist aus Sicht des Programms und des Entwicklers gar nicht erkennbar, und ist je nach Implementierung der JVM und des Betriebssystems unterschiedlich.
Tu doch nicht so, als wenn irgendein Anwendungsentwickler sich wirklich bewusst darüber wäre, wie unten dran die Speicherverwaltung arbeitet!
Tat ich das? Ich erwähnte die Grundkonzepte die man kennen sollte.

Für einen Java Neuling ist es besser, wenn er den Unterschied gar nicht kennt. Jedes Objekt hat eine Nummer, und Übergabeparameter werden grundsätzlich kopiert. Punkt. Einfach und einleuchtend.
Ich schrieb doch dass man die Unterschiede nicht kennen muss. Aber eben dass die Referenzen kopiert werden, nicht die Objekte, und dass eine Änderung der Referenz nicht zurückkopiert wird. Und wie man dennoch CbR hinbekommt, wenn man es denn mal benötigt. Das zu wissen bekommt man ja nicht in die Wiege gelegt.

Gib mal bitte für Java ein Beispiel. Da bin ich nämlich mal sehr gespannt.
Die gesamte Speicherverwaltung zum Beispiel. Man sollte z.B. wissen dass lokale Variablen auf dem Stack landen und rekursive Funktionen den Stack füllen (sofern nicht tail-rekursiv), wie Garbage-Collection im Groben funktioniert, dass massenweise neue Objekte anlegen schlecht für die Performance sein kann, usw.

del_4901
2007-08-07, 15:51:35
Gib mal bitte für Java ein Beispiel. Da bin ich nämlich mal sehr gespannt.

Also wenn ich manchmal sehe wie die Java-Programmierer (insbesondere welche die nichts Anderes kennen) sich einfach mal Speicher auf dem Heap hohlen. Und die ganze Abeit auf den GC abwälzen, dann wird mir schlecht. Es gibt oft genug die Möglichkeit Speicher "wiederzuverwenden", aber da wird sich jedesmal neu Speicher geholt. Da brauch man sich gar nicht wundern warum das ein odere Andere Java Programm so schrecklich langsam ist. Wenn dann Soeiner anfängt C++ zu programmiern, sich 100x Speicher hohlt und dann an 100000 Stellen versucht das wieder zu löschen, stellen sich bei mir jedesmal die Nackenhaare auf.

Ich war ja lange Zeit der Meinung das Java ne gute Anfängersprache ist, aber jetzt wo ich gesehen habe was die Anfänger daraus machen, bin ich doch ein wenig davon abgekommen.

Expandable@work
2007-08-07, 15:54:31
Für einen Java Neuling ist es besser, wenn er den Unterschied gar nicht kennt.

Tja, dann wird aber mit folgendem Code Probleme kriegen (Pseudo-Java):



main()
{
MyKlasse k = new MyKlasse();
k.speichere("Hallo!");
Funktion1(k);
k.gibAusWasGespeicherIst(); <- gibt "Test!" aus!
Funktion2(k);
k.gibAusWasGespeichertIst(); <- gibt immer noch "Test!" aus!
}

Funktion1(MyKlasse k)
{
k.speichere("Test!");
}

Funktion2(MyKlasse k)
{
k = new MyKlasse();
k.speichere("So geht's halt eben nicht!");
}

Monger
2007-08-07, 16:46:52
Es geht bei Zeigern/Referenzen ja immer nur um das Konzept "Nummer zeigt auf Ort im Speicher".

Und schon das stimmt bei Java nicht. Die Objektnummer sagt nichts über die Position im Speicher aus.

Ich schrieb doch dass man die Unterschiede nicht kennen muss. Aber eben dass die Referenzen kopiert werden, nicht die Objekte, und dass eine Änderung der Referenz nicht zurückkopiert wird.

Ohne Vorkenntnisse in C++ käme ein Anfänger nichtmal auf die Idee, dass ein Objekt überhaupt kopiert werden könnte.
Was ja im Grunde auch eine hirnrissige Idee ist: warum sollte ich denn zweimal das selbe Objekt im Speicher haben wollen?


Die gesamte Speicherverwaltung zum Beispiel. Man sollte z.B. wissen dass lokale Variablen auf dem Stack landen und rekursive Funktionen den Stack füllen (sofern nicht tail-rekursiv),

Afaik macht das in Java nichtmal einen Unterschied, weil vor verlassen der Methode wird sowieso nicht aufgeräumt.

wie Garbage-Collection im Groben funktioniert, dass massenweise neue Objekte anlegen schlecht für die Performance sein kann, usw.
Für Anfänger ist das alles nicht so interessant. Wenn man sich an die einfache Regel hält, immer nur das sich zu merken was man wirklich braucht, sollte man normalerweise nie mit dem Garbage Collector oder Objekt Stack Probleme haben.
Aber wenn du das als Low Level Wissen betrachtest, stimme ich dir grundsätzlich schon zu.

Gast
2007-08-07, 17:17:23
Und schon das stimmt bei Java nicht. Die Objektnummer sagt nichts über die Position im Speicher aus.


Du denkst sicher an die Garbage Collection. Aber Xmas ging es hier mehr um's Prinzip. Es ist ja egal, ob der GC die Referenzen updated und die virtuellen Speicheradressen sich ständig ändern können. Der Punkt ist, dass es Wertetypen und Referenztypen gibt. Das ist sprachunabhängig bei jeder Compilersprache das kleine 1*1.
Dass bei Wertetypen die Datenstruktur auf dem Stack landet und bei Referenztypen die Variable auf dem Stack auf eine Datenstruktur im Heap zeigt. Das erachte ich schon als Grundwissen, womit sich ein Anfänger beschäftigen sollte.



Ohne Vorkenntnisse in C++ käme ein Anfänger nichtmal auf die Idee, dass ein Objekt überhaupt kopiert werden könnte.


Er kommt spätestens dann darauf, wenn er einen Wertetyp einer Funktion übergibt, innerhalb der Funktion Änderungen vornimmt und einfach ohne Rückgabetyp zurückspringt. Dann wird er sich schon wundern, warum das Objekt nicht die Änderung beinhaltet.

Monger
2007-08-07, 17:17:28
Also wenn ich manchmal sehe wie die Java-Programmierer (insbesondere welche die nichts Anderes kennen) sich einfach mal Speicher auf dem Heap hohlen. Und die ganze Abeit auf den GC abwälzen, dann wird mir schlecht. Es gibt oft genug die Möglichkeit Speicher "wiederzuverwenden", aber da wird sich jedesmal neu Speicher geholt.

Was genau meinst du mit wiederverwenden?
Es kommt natürlich auf den Fall an, aber die Instanziierung an sich ist nicht wirklich teuer. Wenn ein Objekt wirklich neu ist, muss es neu erzeugt werden, und nicht künstlich aus einem alten hingebogen werden. Das ist allemal besser, als die Designprobleme die man sich einhandelt, wenn man den Scope von Objekten künstlich erweitert, nur um sie noch an anderer Stelle wiederverwenden zu können. Performance ist nicht alles.

Tja, dann wird aber mit folgendem Code Probleme kriegen (Pseudo-Java):
...

Zugegeben, das zu erklären ist eine harte Nuss. Was eigentlich in der Methodendeklaration gemacht wird, ist das ein neues k deklariert wird, das mit dem alten nichts mehr zu tun hat. Würde man das k nicht k nennen, wäre das Beispiel eigentlich klar.

Haarmann
2007-08-07, 17:46:13
Also wenn ich vor der Wahl stehe Java oder C++ zu wählen, dann doch gleich gar nicht beginnen - ist doch wie Pest und Cholera.

Zum Lernen sind die alten "Klartextsprachen" eindeutig besser geeignet - es sei denn, man versteht kein Englisch.

Monger
2007-08-07, 18:31:31
Du denkst sicher an die Garbage Collection.

Nein, ich denke da schon an den Heap. Ein Objekt mit der Nummer 5 liegt nicht zwingenderweise im Speicher zwischen den Objekten 3 und 7. Da der Heap ja wohl auch in einer Hashtable organisiert ist, ist das sogar ziemlich unwahrscheinlich.
Wie dann welche Speicherzellen belegt werden, ob ein int 32 oder 64Bit groß ist, ob ein Bool nur ein einzelnes Bit oder gar ein ganzes Byte belegt - alles Implementierungsdetails die nur die JVM kennt.


Aber Xmas ging es hier mehr um's Prinzip. Es ist ja egal, ob der GC die Referenzen updated und die virtuellen Speicheradressen sich ständig ändern können. Der Punkt ist, dass es Wertetypen und Referenztypen gibt. Das ist sprachunabhängig bei jeder Compilersprache das kleine 1*1.
Dass bei Wertetypen die Datenstruktur auf dem Stack landet und bei Referenztypen die Variable auf dem Stack auf eine Datenstruktur im Heap zeigt. Das erachte ich schon als Grundwissen, womit sich ein Anfänger beschäftigen sollte.

Da stimme ich dir völlig zu.

Xmas
2007-08-08, 00:27:42
Und schon das stimmt bei Java nicht. Die Objektnummer sagt nichts über die Position im Speicher aus.
Wenn sie eine Adresse oder ein Tabellenindex ist, schon.

Ohne Vorkenntnisse in C++ käme ein Anfänger nichtmal auf die Idee, dass ein Objekt überhaupt kopiert werden könnte.
Was ja im Grunde auch eine hirnrissige Idee ist: warum sollte ich denn zweimal das selbe Objekt im Speicher haben wollen?
Du glaubst gar nicht auf welche Ideen Anfänger kommen. Kopien können ab und an auch mal ganz praktisch sein.

Afaik macht das in Java nichtmal einen Unterschied, weil vor verlassen der Methode wird sowieso nicht aufgeräumt.
Es ging mir um den Speicherverbrauch von Rekursion. Und wenn die Methode zwischendrin eine andere aufruft (was ja doch recht wahrscheinlich ist), wird diese auch wieder verlassen.

lola
2007-08-08, 00:37:30
Python ist meiner Meinung nach sehr gut geeignet um gewisse Strukturen, welche im Programmieren umgesetzt werden können, besser zu verstehen. Weiterhin ist die Sprache sehr kompakt gehalten und die Syntax leicht verständlich.

Java ist auch nicht schlecht und als Anfängersprache gut geeignet.

Von C++ würde ich als Anfänger erstmal abstand nehmen oder eben wie viele vorher schon meinten, eben erstmal Prozedural damit programmieren und später dann auf OO umsteigen.