Entwickler-Ecke

Programmierwerkzeuge - Delphi vs. C(++/#)


LuGo - Mo 02.08.10 09:56
Titel: Delphi vs. C(++/#)
Hallo zusammen,

ich habe mir überlegt von Delphi auf C(++/#) zu wechseln. Das Argument das Hobbyprogrammierer mit kleinem Geldbeutel nur mit max. Delphi 7 (aus dem Jahre 2002) programmieren können, das ausschlaggebende. Aber bevor ich mich dann überstrürzt an C(++/#) ranmache, bräuchte ich noch weitere Inforamtionen zu C(++/#) überhaupt. Ich habe nämlich überhaupt keine Ahnung. Schön wäre noch in so einem ProConta System und der vergleich zu Delphi

Und was nett wäre, wenn ihr diesen Code in C(++/#) übersetzen würdet. Soll ein einfacher Taschenrechner sein:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure Button1.Click (TObject);
var:Zahl1, Zahl2, Ergebnis: Integer;
begin
Zahl1:=StrToInt(Edit1.Text);
Zahl2:=StrToInt(Edit2.Text);
Ergebnis := Zahl1+Zahl2;
Label1.Caption := ('Ergebnis:' + Ergebnis')

end;

Und ich möchte euch bitten keine Diskussion, wie vor 14 Tagen (Delphi am Rande) vom Zaun zu brechen.

Danke

LuGo


danielf - Mo 02.08.10 10:09

Hallo,

ich kann zwar kein Delphi, aber ich denke ich habe den Code verstanden.

In C# würde der Code dann wie folgt aussehen (das Event Click von Button1 muss dabei registriert sein, hier der EventHandler):


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
private void Button1_Click(object sender, EventArgs e)
{
   int zahl1 = int.Parse(Edit1.Text);
   int zahl2 = int.Parse(Edit2.Text);
   int ergebnis = zahl1 + zahl2;

   label1.Text += "Ergebnis: " + ergebnis.ToString();
}


Über die Argument pro und contra musst du dir selber klar werden. Wichtig finde ich immer, was man eigentlich damit machen will und wie die langfristigen Ziele aussehen. In der Windows-Entwicklung mit GUI ist für mich C# gesetzt.

Gruß


LuGo - Mo 02.08.10 11:15

Was braucht man eigentlich dazu, um mit c++ arbeiten zu können???


danielf - Mo 02.08.10 11:16

Einen Editor und einen Kompiler.

Ist dir der Unterschied zwischen C++, Visual C++ und C# klar?

Wenn nicht mach dich bitte schlau und vermeide die Sprachen wie wild durcheinander zu werfen.


elundril - Mo 02.08.10 15:12

user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

ich kann zwar kein Delphi, aber ich denke ich habe den Code verstanden.

In C# würde der Code dann wie folgt aussehen (das Event Click von Button1 muss dabei registriert sein, hier der EventHandler):


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
private void Button1_Click(object sender, EventArgs e)
{
   int zahl1 = int.Parse(Edit1.Text);
   int zahl2 = int.Parse(Edit2.Text);
   int ergebnis = zahl1 + zahl2;

   label1.Text += "Ergebnis: " + ergebnis.ToString();
}



Das += sollte man noch zu einem = umformen oder? Sonst hat man nach den zweiten Klick dann spätestens sowas dastehen: Ergebnis: 5Ergebnis: 7. Und das is ja ned schön. Deswegen sollte man den text im Label nicht anfügen sondern ersetzen.

lg elundril


JüTho - Mo 02.08.10 16:21

user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
Das += sollte man noch zu einem = umformen oder? Sonst hat man nach den zweiten Klick dann spätestens sowas dastehen: Ergebnis: 5Ergebnis: 7. Und das is ja ned schön. Deswegen sollte man den text im Label nicht anfügen sondern ersetzen.

Das kommt darauf an. Wenn man nur das aktuelle Ergebnis haben will, hast du recht; dann gehört ein einfaches Gleichheitszeichen hin. Wenn man auch die vorherigen Ergebnisse anzeigen will, ist += korrekt, und dann am besten zusammen mit Environment.NewLine.

Jürgen


Jakob_Ullmann - Mo 02.08.10 18:55

Dein Programm hat keine eindeutige C++ Übersetzung. Es gibt eben mehrere Möglichkeiten, GUIs zu erstellen. Als Konsolenanwendung würde das ungefähr so aussehen:


C#-Quelltext
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:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
#include <iostream>
#include <cstdlib>
/* C-Header stdlib.h -> cstdlib in C++
 * brachen wir für atoi(), itoa()
 * EDIT: nein, itoa() ist nicht ISO-Standard;
 * siehe unten für K&R-Implementierung
 */


int do_add(char *, char *); // Funktionsprototyp
/* Hinweis:
 * In der C++ Standard Library findet sich auch eine bessere String-Klasse.
 * wird aber nicht so häufig verwendet. Außerdem würde der die Lösung nur 
 * verkomplizieren.
 */


int do_add(char *arg1, char *arg2)
{
    int zahl1, zahl2, ergebnis;

    zahl1 = atoi(arg1);
    zahl2 = atoi(arg2);
    ergebnis = zahl1 + zahl2;

    return ergebnis; // Sobald du return "aufrufst", ist Sense
}

int main()
{
    char zahl1[10], zahl2[10];

    std::cout << "Geben Sie zwei Zahlen durch Lehrzeichen getrennt ein: ";
    std::cin  >> zahl1 >> zahl2;
    std::cout << "  = " << do_add(zahl1, zahl2)
        << std::endl;

    return 0;
}


Compiler: MS Visual C++ Express, MinGW, Cygwin (Linux Kompatibilitätsschicht), Intel C++
IDE: MS Visual C++ Express, Code::Blocks, Eclipse mit Plugin

Wenn du was kostenloses suchst: Code::Blocks mit beliebigem Compiler, dazu das wxWidgets-Plugin -> GUI Designer

Buch: C++ Objektorientiertes Programmieren von Anfang an, Helmut Erlenkötter, rororo, 10.95 €

Jedenfalls: C++ ist nicht so viel schwerer als C# (zumindest der Teil von C++, den du täglich brauchst). Hauptnachteil ist aber, dass für grafische Oberflächen keine so schöne Lösung wie in Delphi oder C# existiert.


elundril - Mo 02.08.10 19:01

Für C++ kann ich auch das [http://www.amazon.de/gp/product/3868940057/ref=pd_lpo_k2_dp_sr_1?pf_rd_p=471061493&pf_rd_s=lpo-top-stripe&pf_rd_t=201&pf_rd_i=3827312965&pf_rd_m=A3JWKAKR8XB7XF&pf_rd_r=0MA0QC9Y8A9989PQH8Z1] hier empfehlen.

lg elundril


Chemiker - Mo 02.08.10 20:47

Hallo,

Jakob_Ullmann hat folgendes geschrieben:
Hauptnachteil ist aber, dass für grafische Oberflächen keine so schöne Lösung wie in Delphi oder C# existiert.


Wie meinst Du das? Unter C++ Builder und VS 2010 C++ geht es eigentlich genauso wie unter Delphi.

Bis bald Chemiker


jaenicke - Mo 02.08.10 22:01

Ich habe am Wochenende gerade mit C++ gearbeitet, da ich einige Modifikationen an UltraVNC vorgenommen habe. Alleine die Kompilierzeit jedesmal...
Visuelle Oberflächen sind so eine Sache, da kann man ziemlich viele Varianten nutzen, jeweils mit Vor- und Nachteilen.

Keine davon kommt aber so richtig an Delphi oder C# heran. Wenn die Wahl besteht, würde ich jederzeit zu C# tendieren. Da hat man dank des .NET Frameworks sehr sehr viele Grundlagen, die man in C++ mühsam basteln oder als Quelltext finden müsste.

Nur wegen anderen Plattformen wie Linux würde ich C++ nehmen.

Ich selbst benutze Visual Studio 2008 Professional, die Express Editions davon sind schön und kostenlos.


CSMN - Di 03.08.10 11:06

du kannst auch mit c# für linux und mac programme schreiben - siehe mono.net [http://mono-project.com/Main_Page]


Jakob_Ullmann - Di 03.08.10 19:57

Also zu der Übersetzung des Taschenrechners in C++. Ich habe mal schnell mit Anjuta + Glade + GTK+ (in C) einen Mini-Addierer geschrieben. Ich hänge den jetzt mal nicht an, es geht ja nur darum, einen Eindruck von der Sprache zu vermitteln. Ist natürlich C und nicht C++, weil Anjuta nur für C Methoden-Stubs generieren kann, aber so stark unterscheiden sich jetzt C und C++ auch wieder nicht. atoi() und reverse() sind schnell die in Wikipedia abgeschriebene Kerningham&Ritchie-Implementierungen kopiert, weil ich keine Lust hatte, das jetzt zu schreiben. Ansonsten aber eigentlich brauchbar.

Header callbacks.h

C#-Quelltext
1:
2:
3:
4:
5:
#include <gtk/gtk.h>

extern GtkWidget *zahl1, *zahl2, *ausgabe;

void destroy (GtkWidget *widget, gpointer data);


Source callbacks.c

C#-Quelltext
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:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "callbacks.h"

/****
 * kopiert von Wikipedia auf die Schnelle ;-)
 */


void itoa(int n, char s[])
{
    int i, sign;
 
    if ((sign = n) < 0)  /* record sign */
        n = -n;          /* make n positive */
    i = 0;
    do
    {   /* generate digits in reverse order */
        s[i++] = n % 10 + '0';   /* get next digit */
        /* Kommentar von mir: in C darfst du ohne weiteres int's und char's addieren;
         * vieles, was in C geht, musst du in C++ aber casten
         */

    } while ((n /= 10) > 0);     /* delete it */
    if (sign < 0)
        s[i++] = '-';
    s[i] = '\0';
    reverse(s);
}

/* reverse:  reverse string s in place */
void reverse(char s[])
{
    int i, j;
    char c;
    
    /* Kommentar von mir:
     * spürst du die Energie hinter der for-Schleife? ;-)
     * -> i++, j-- 
     */

    for (i = 0, j = strlen(s)-1; i<j; i++, j--)
    {
        c = s[i];
        s[i] = s[j];
        s[j] = c;
    }
}
/* ende kopie */

void
add_up (int n1, int n2)
{
    char s[20];
    /* itoa = IntToStr, atoi = StrToInt */
    itoa(n1 + n2, s);  /* hier: Übergabe s bereits Pointer: s <=> &(s[0]) */
    gtk_label_set_text (GTK_LABEL(ausgabe), (gchar*)s);
}

void
destroy (GtkWidget *widget, gpointer data)
{
    gtk_main_quit ();
}

void
on_button1_clicked (GtkButton *self, gpointer user_data)
{
    int a1, a2;
    /* (char*)... ist ein Cast; gtk_entry... gibt nämlich nicht char*, sondern
     * gchar* zurück (glib). GTK_ENTRY ist ein Makro, das das Casten übernimmt,
     * in dem Fall GtkWidget -> GtkEntry (Entry <=> TEdit)
     */

    a1 = atoi((char*)gtk_entry_get_text (GTK_ENTRY(zahl1)) );
    a2 = atoi((char*)gtk_entry_get_text (GTK_ENTRY(zahl2)) );
    /* Bedenke, dass C im Gegensatz zu C++ keine Klassen unterstützt.
     * also mit gtkmm würde das schon ein wenig anders aussehen.
     */

    add_up(a1, a2);
}


Source main.c

C#-Quelltext
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:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>

#include <config.h>

#include <gtk/gtk.h>



/*
 * Standard gettext macros.
 */

#ifdef ENABLE_NLS
#  include <libintl.h>
#  undef _
#  define _(String) dgettext (PACKAGE, String)
#  ifdef gettext_noop
#    define N_(String) gettext_noop (String)
#  else
#    define N_(String) (String)
#  endif
#else
#  define textdomain(String) (String)
#  define gettext(String) (String)
#  define dgettext(Domain,Message) (Message)
#  define dcgettext(Domain,Message,Type) (Message)
#  define bindtextdomain(Domain,Directory) (Domain)
#  define _(String) (String)
#  define N_(String) (String)
#endif



#include "callbacks.h"

/* For testing propose use the local (not installed) ui file */
/* #define UI_FILE PACKAGE_DATA_DIR"/gtk_taschenrechner/ui/gtk_taschenrechner.ui" */
#define UI_FILE "src/gtk_taschenrechner.ui"

GtkWidget *zahl1, *zahl2, *ausgabe;

GtkWidget*
create_window (void)
{
  GtkWidget *window;
  GtkBuilder *builder;
  GError* error = NULL;

  builder = gtk_builder_new ();
  if (!gtk_builder_add_from_file (builder, UI_FILE, &error))
  {
    g_warning ("Couldn't load builder file: %s", error->message);
    g_error_free (error);
  }

  /* This is important */
  gtk_builder_connect_signals (builder, NULL);
  window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
  
  zahl1 = GTK_WIDGET (gtk_builder_get_object (builder, "entry1"));
  zahl2 = GTK_WIDGET (gtk_builder_get_object (builder, "entry2"));
  ausgabe = GTK_WIDGET (gtk_builder_get_object (builder, "label2"));

  g_object_unref (builder);
  
  return window;
}


int
main (int argc, char *argv[])
{
   GtkWidget *window;


#ifdef ENABLE_NLS
  bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
  textdomain (GETTEXT_PACKAGE);
#endif

  
  gtk_set_locale ();
  gtk_init (&argc, &argv);

  window = create_window ();
  gtk_widget_show (window);

  gtk_main ();
  return 0;
}


gtk_taschenrechner.ui ist sowas wie eine DFM in Delphi, bloß eben von Glade generiert. Habe ich jetzt nicht hier, also nicht wundern.

ÜBRIGENS: Angeblich soll es Glade auch für Windows geben (logisch, GTK+ gibt es ja auch für Windows). Hab's aber nicht ausprobiert.

Zu den Sourcen: die Klammern sind hier etwas verrutscht, sorry.


guinnes - Mi 04.08.10 09:13

Ob ich nach der Enthüllung [http://www.netzpolitik.org/2010/terrorismusexperte-warnt-vor-c/] noch C++ machen möchte.....


Jakob_Ullmann - Mi 04.08.10 16:47

:rofl:

Als nächstes sollten wir vor dem Internet warnen! :twisted:

EDIT: pro-contra für C++:

Contra:
- du kannst mit C++ ziemlich viel Unsinn anstellen (Pointer, Makros, Casts), da du mehr Freiheiten hast
- manchmal eine "read-only"-Sprache. Z. B. kommen Pointern eine größere Rolle zu. Es gibt kein ISO-Pendant zu dynamischen Arrays. Entweder macht man das als verkettete Liste oder mit der STL std::vector-Klasse. Letzteres macht es auch automatisch, ohne dass du dich um Speicherverwaltung kümmern musst, ist aber nicht so "magisch" wie in Delphi.
- GUI-Design nicht so einfach wie in Delphi. Für GTK+ und wxWidgets gibt es aber brauchbare Lösungen, die dir die Arbeit wenigstens vereinfachen.


Pro:
- du bist nicht an eine bestimmte Firma und deren Launen sowie deren Marketing-Inkompetenz gebunden. Es gibt bei C++ kein wirkliches Monopol. Allerdings halten sich nicht alle Compiler an den ISO-Standard. Vorbildlich, aber dennoch nicht 100% kompatibel, ist da GCC, Microsoft nimmt es mit Standards wie so oft nicht so genau (z. B. sind nicht alle vergeschriebenen Funktionen aus der math.h / cmath implementiert).
- du hast mehr Freiheiten
- du kriegst gute Tools kostenlos und frei
- du hast die Möglichkeit, mit etwas Aufwand plattformunabhänhige Programme zu schreiben.
- du hast Sprachfeatures wie den Operator +=, ?:, generische Templates, die Möglichkeit, Operatoren zu überladen (hast du in neueren Delphi-Versionen, aber ist glaube ich kein ISO-Standard [-> Pro#1], und eben nicht in D7).


Auf jeden Fall ist C++ Geschmackssache.

Bei C# sehe ich lediglich die Nachteile, dass du keine Pointer hast, und, dass du an MS gebunden bist (abgesehen von Mono, was aber imho noch nicht für den professionellen Einsatz reif ist). Auf der anderen Seite nimmt es dir aber auch jede Menge Arbeit ab.


Chemiker - Mi 04.08.10 23:58

Hallo,

vielleicht als weitere Entscheidungshilfe. Einfach mal nachsehen mit welcher Programmiersprache MS Office 2010 geschrieben worden ist.

Bis bald Chemiker


Jakob_Ullmann - Do 05.08.10 11:06

Hab Chemikers Beitrag gar nicht gemerkt.

user profile iconChemiker hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

Jakob_Ullmann hat folgendes geschrieben:
Hauptnachteil ist aber, dass für grafische Oberflächen keine so schöne Lösung wie in Delphi oder C# existiert.


Wie meinst Du das? Unter C++ Builder und VS 2010 C++ geht es eigentlich genauso wie unter Delphi.

Bis bald Chemiker


Sicher, aber ihm ging es ja um den Preis. Und C++ Builder ist ja genauso teuer wie Delphi. Und Visual Studio ist auch nicht gerade billig. Es gibt zwar eine kostenlose Express-Version, allerdings hast du mit VC++ Express die Microsoft Foundation Classes (MFC) nicht. Du kannst also lediglich C++ für .NET oder die Win32-API nutzen, wenn du eine GUI haben willst. Das halte ich aber für (C++ .NET) nicht sinnvoll bzw. (Win32-API) viel zu kompliziert. Man kann also nur andere Frameworks wie Qt, GTK+ (bzw. gtkmm), wxWidgets "von Hand" bedienen oder eben dazu noch andere Designer nutzen (Glade für GTK+, Code::Blocks wxWidgets Plugin, Nokia's QtDesigner), was sich dann aber etwas komplizierter gestaltet.

Unter GNU/Linux hast du die Möglichkeit, Anjuta mit integriertem Glade (und DevHelp Plugin) zu nutzen. Für Windows hast du diese IDE nicht. Das geht zwar dann auch ganz gut, aber es ist halt nicht integriert und du hast dann immer noch die Aufgabe, dich um Sachen wie das Verknüpfen von Callback-Funktionen zu kümmern. Dafür sind solche Lösungen kostenlos, leistungsfähig und plattformunabhängig.

PS: http://glade.gnome.org/ . Also ja, gibt es auch für Windows.
EDIT: Habe gerade gelesen, dass es für GNOME und Anjuta die Möglichkeit gibt, das mit Cygwin zu nutzen.


12profi - Do 05.08.10 11:07

Zitat:
Und was nett wäre, wenn ihr diesen Code in C(++/#) übersetzen würdet. Soll ein einfacher Taschenrechner sein:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure Button1.Click (TObject);
var:Zahl1, Zahl2, Ergebnis: Integer;
begin
Zahl1:=StrToInt(Edit1.Text);
Zahl2:=StrToInt(Edit2.Text);
Ergebnis := Zahl1+Zahl2;
Label1.Caption := ('Ergebnis:' + Ergebnis')


also ich würde es so machen


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
double zahl1;
double zahl2;
double ergebnis;
zahl1=convert.ToDouble(Textbox1.Text)
zahl2=convert.ToDouble(Textbox2.Text)
if(TextBox3.Text=="+")
{
ergebnis=zahl1+zahl2;
label1.Text=ergebnis.ToStrin();
}


und mit /*-auch dafür gibt es aber auch switch und case

z.b. Tutorial http://www.youtube.com/watch?v=Akz60H0NlJQ

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


F34r0fTh3D4rk - Do 05.08.10 12:56

Wie wärs mit Java? Sehr schöne, objektorientierte Sprache. Platform-unabhängig und weit verbreitet. Außerdem gibt es schöne kostenlose IDEs (Eclipse und NetBeans).

+ Garbage Collection
+ Platform Unabhängigkeit
+ "von Grund auf" Objektorientiert
+ Viele Bibliotheken
+ Weit verbreitet

- Java Runtime Environment vorausgesetzt

Dass Java langsam ist, ist übrigens so auch nicht (mehr) richtig. Durch dynamische Optimierung holt die JVM noch einiges an Performance raus.

Siehe auch: http://de.wikipedia.org/wiki/Java_%28Programmiersprache%29#Grundkonzepte_der_Sprache


C#-Quelltext
1:
2:
3:
4:
5:
 public class HalloWelt {
     public static void main(String[] args) {
         System.out.println("Hallo Welt!");
     }
 }


und: http://de.wikipedia.org/wiki/Java-Syntax

Dein Code (so oder so ähnlich) in Java:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
public void buttonClick(Object o) {
  int zahl1, zahl2;
  zahl1 = Integer.valueOf(edit1.getText());
  zahl2 = Integer.valueOf(edit2.getText());
  int ergebnis = zahl1 + zahl2;
  label1.setText("Ergebnis:" + ergebnis);
}


Critter - Do 05.08.10 13:22

Hallo,

ich würde vorschlagen, probiere es einfach aus. Denke dir ein kleines Projekt aus, z. B. ein kleiner Taschenrechner mit den vier Grundrechenarten (in Anlehnung an dein Eröffnungspost), lade dir für jede der Sprachen, die dich interessieren Kostenlose Werkzeuge herunter und Implementiere es in jeder der Sprachen. Ich denke so wirst du an ehesten feststellen können welche der Sprachen dir am Besten gefällt. Denn Diskussionen welche Sprache die besser ist führen zu nichts. Es ist schlicht Geschmackssache also probiere selbst und frage nicht dritte wie es schmeckt ;).

Mögliche Tools für Windows:

C++


C#


Andere User werden dir sicher noch andere Empfehlen können. Wenn du auch Java in Erwägung ziehen willst darf natürlich auch Eclipse [http://www.eclipse.org] nicht ungenannt bleiben.

critter


Jakob_Ullmann - Do 05.08.10 14:32

Das stimmt, Java ist wirklich eine sehr schöne Sprache.

Als IDE kann ich auch Eclipse empfehlen. NetBeans ist sicherlich Geschmackssache (besonders wegen seiner guten Unterstützung für GUIs), aber für Anfänger IMHO ungeeignet (setzt viel voraus, während du bei Eclipse direkt mit Tutorials überflutet wirst).

Tutorials (englisch): http://download.oracle.com/javase/tutorial/java/index.html

PS: nochmal zu Glade: OK, ist halt schon ziemlich mächtig. Man muss halt umdenken, wenn man damit arbeiten will. Du kannst Elemente nicht absolut positionieren, sondern nur durch Boxen eine Einteilung vornehmen. Das heißt, dass du die Oberfläche im Voraus mit Bleistift und Papier planen musst, was aber manchen Anwendungen auch sonst gut täte.


Aya - Do 05.08.10 15:21

Ich denke man sollte bei der Überlegung welche Sprache man lernen will einfach auch auf sein Bauchgefühl hören.

Wenn man jede einfach mal nen Tag lang ausprobiert und schaut wo man am besten zurecht kommt, wird es sehr vermutlich Java oder C# werden, denn bei C++ sind 95% der Leute am ersten tag gradmal soweit das sie nen CommandLine-HelloWorld schaffen. Denn Qt oder Ähnliches zu instalieren erfordert auch Zeit, nerven und ggf. erfahrung.

Damit will ich nur sagen das der erste flüchtige eindruck den man von einer Sprache hat sehr verzerrt sein kann ;)

Insofern würde ich mir selbst die frage stellen "Was genau habe ich vor?" und "Was sagt mein Bauchgefühl dazu..?".

Aya


12profi - Do 05.08.10 18:20

ist java besser als c# aber java stirbt doch bald aus oder ?


elundril - Do 05.08.10 18:23

user profile icon12profi hat folgendes geschrieben Zum zitierten Posting springen:
java stirbt doch bald aus oder ?


rechtfertigen sie ihre These wenn ich bitten darf. Warum sollte Java bald aussterben? (Ich hab das Gefühl das Gegenteil ist der Fall, und im Ausbildungssektor wird es auf jeden Fall immer nen Platz haben, denk ich, wegen der Plattformunabhängigkeit)


Aya - Do 05.08.10 20:41

user profile icon12profi hat folgendes geschrieben Zum zitierten Posting springen:
ist java besser als c# aber java stirbt doch bald aus oder ?

Ich denke auch eher das gegenteil ist der Fall.

In letzer Zeit höre ich immer öffter von Java-Entwicklern und Firmen die mit Java Entwickeln.
Grade auch im Uni-Bereich ist es extrem verbreitet seit einiger Zeit.

Definitiv viel mehr als noch vor ein paar Jahren denke ich.


F34r0fTh3D4rk - Do 05.08.10 21:58

Ich glaube auch, dass Java und Weiterentwicklungen davon (wie zB Scala) eher die Zukunft, als die Vergangenheit darstellen.
Java ist wirklich sehr weit verbreitet. Im Datenbank-Sektor, in der Forschung, aber auch im Bereich Open-Source.


Chiller_No.1 - Fr 06.08.10 09:03

user profile icon12profi:
Zitat:
ist java besser als c# aber java stirbt doch bald aus oder ?


Zitat:
Hallo,ich habe mal eine Frage ich bin 12jahre alt und wollte mal fragen da ich derzeitig mit c# Programmierenlerne ist das wirklich gut also was soll ich machen wenn c# austirbt.



Welche Programmiersprachen sollen deiner Meinung nach den noch aussterben?!? Grade Java hat für die Zukunft ein sehr großes Potential.. C# KANN zum jetzigen Zeitpunkt garnicht aussterben, denn das würde heißen das Windows aussterben würde..
Und ich glaube das siehts du selber ein.. Das ist in der näheren Zukunft wohl definitiv nicht zu erwarten...

Ich Zweifel hier ernsthaft an ob du deine Posts ernsthaft meinst.. Falls nicht solltest du diese doch lassen..

Mfg Chiller


12profi - Fr 06.08.10 11:17

nein ich meine wegen dem alter von c# aber gut ihr habt mich eines besseren belärt weil ich dachte dann Programmiert Windows nicht mehr mit c# sondern einer anderen Sprache

mfg 12profi


Critter - Fr 06.08.10 11:20

Programmiersprachen sterben ohnehin nie aus. Sie verlieren vielleicht an Bedeutung aber das ist ein Prozess der sich über Jahrzehnte hinzieht. Er lässt den Entwicklern also immer noch Zeit neue Sprachen zu lernen. Generell kommt es in der Regel in Laufe eines Programmiererlebens häufiger vor, dass man sich mir anderen Sprachen auseinandersetzen darf. Ich denke die Vorstellung, eine Sprache zu lernen und dann ewig dabei zu bleiben ist für die meisten Programmierer ohnehin realitätsfern.

critter

PS: C# ist eine ziemlich junge Sprache.


12profi - Fr 06.08.10 13:26

achso ok danke dann bleib ich bei c#