Java und C#...

Es gibt 40 Antworten in diesem Thema. Der letzte Beitrag () ist von Tsuyo.

    Java und C#...

    Nabend zusammen,

    Stehe im Moment vor der Entscheidung, eine neue Programmiersprache zu erlernen. Mich "lächeln" dabei c# (wovon ich schon ein Teil beherrsche) aber auch Java an :wacko: . Welche Sprache würdet ihr lernen? Bzw. Welche Vorteile bietet C# ggü. Java und umgekehrt?

    Danke im voraus

    Gruß Fury
    Jetzt schnell und einfach das Zehnfingersystem mit Scribble 3 erlernen. Mehr Informationen und Download gibts hier. Redundancy2 - leichtgewichtige freie Cloudsoftware. Folge mir auf GitHub
    Wie verschieden sind die beiden Sprachen eigtl. im Syntax?
    Jetzt schnell und einfach das Zehnfingersystem mit Scribble 3 erlernen. Mehr Informationen und Download gibts hier. Redundancy2 - leichtgewichtige freie Cloudsoftware. Folge mir auf GitHub
    Einen kleinen Einblick kannst du bekommen, wenn du in diese Algorithmensammlung schaust:
    de.wikibooks.org/wiki/Algorith…ortierverfahren:_Heapsort
    (hier Heapsort)

    C#

    Quellcode

    1. //Die Implementierung wurde der JAVA-Version nachempfunden
    2. /// <summary>
    3. /// sortiert ein Array mit heapsort
    4. /// </summary>
    5. /// <param name="a">Das Array</param>
    6. /// <remarks></remarks>
    7. private void heapSort(ref int[] a)
    8. {
    9. generateMaxHeap(a);
    10. //hier wird sortiert
    11. for (int i = a.Length - 1; i >= 0; i += -1) {
    12. vertausche(a, i, 0);
    13. versenke(a, 0, i);
    14. }
    15. }
    16. /// <summary>
    17. /// Erstellt einen MaxHeap Baum im Array
    18. /// </summary>
    19. /// <param name="a">das array</param>
    20. /// <remarks></remarks>
    21. private void generateMaxHeap(int[] a)
    22. {
    23. //starte von der Mitte rückwärts.
    24. for (int i = (int)(a.Length / 2 - 1); i >= 1; i += -1) {
    25. versenke(a, i, a.Length);
    26. }
    27. }
    28. /// <summary>
    29. /// versenkt ein element im baum
    30. /// </summary>
    31. /// <param name="a">Das Array</param>
    32. /// <param name="i">Das zu versenkende Element</param>
    33. /// <param name="n">Die letzte Stelle im Baum die beachtet werden soll</param>
    34. /// <remarks></remarks>
    35. private void versenke(int[] a, int i, int n)
    36. {
    37. while (i <= (n / 2 - 1)) {
    38. int kindIndex = (i + 1) * 2 - 1;
    39. //berechnet den Index des linken kind
    40. //bestimme ob ein rechtes Kind existiert
    41. if (kindIndex + 1 <= n - 1) {
    42. //rechtes kind existiert
    43. if (a[kindIndex] < a[kindIndex + 1])
    44. kindIndex += 1;
    45. //wenn rechtes kind größer ist nimm das
    46. }
    47. //teste ob element sinken muss
    48. if (a[i] < a[kindIndex]) {
    49. vertausche(a, i, kindIndex);
    50. i = kindIndex;
    51. } else { break; }
    52. }
    53. }
    54. /// <summary>
    55. /// Vertauscht die arraypositionen von i und kindIndex
    56. /// </summary>
    57. /// <param name="a">a Das Array in dem getauscht wird</param>
    58. /// <param name="i">i der erste index</param>
    59. /// <param name="kindIndex">kindIndex der 2. index</param>
    60. /// <remarks></remarks>
    61. private void vertausche(int[] a, int i, int kindIndex)
    62. {
    63. int z = a[i];
    64. a[i] = a[kindIndex];
    65. a[kindIndex] = z;
    66. }


    Java

    Quellcode

    1. /**
    2. * sortiert ein Array mit heapsort
    3. * @param a das array
    4. */
    5. private static void heapSort(int[] a) {
    6. generateMaxHeap(a);
    7. //hier wird sortiert
    8. for(int i = a.length -1; i > 0; i--) {
    9. vertausche(a, i, 0);
    10. versenke(a, 0, i);
    11. }
    12. }
    13. /**
    14. * Erstellt einen MaxHeap Baum im Array
    15. * @param a das array
    16. */
    17. private static void generateMaxHeap(int[] a) {
    18. //starte von der Mitte rückwärts.
    19. for(int i = (a.length / 2) - 1; i >= 0 ; i--) {
    20. versenke(a, i, a.length);
    21. }
    22. }
    23. /**
    24. * versenkt ein element im baum
    25. * @param a Das Array
    26. * @param i Das zu versenkende Element
    27. * @param n Die letzte Stelle im Baum die beachtet werden soll
    28. */
    29. private static void versenke(int[] a, int i, int n) {
    30. while(i <= (n / 2) - 1) {
    31. int kindIndex = ((i+1) * 2) - 1; // berechnet den Index des linken kind
    32. //bestimme ob ein rechtes Kind existiert
    33. if(kindIndex + 1 <= n -1) {
    34. //rechtes kind existiert
    35. if(a[kindIndex] < a[kindIndex+1]) {
    36. kindIndex++; // wenn rechtes kind größer ist nimm das
    37. }
    38. }
    39. //teste ob element sinken muss
    40. if(a[i] < a[kindIndex]) {
    41. vertausche(a,i,kindIndex); //element versenken
    42. i = kindIndex; // wiederhole den vorgang mit der neuen position
    43. } else break;
    44. }
    45. }
    46. /**
    47. * Vertauscht die arraypositionen von i und kindIndex
    48. * @param a Das Array in dem getauscht wird
    49. * @param i der erste index
    50. * @param kindIndex der 2. index
    51. */
    52. private static void vertausche(int[] a, int i, int kindIndex) {
    53. int z = a[i];
    54. a[i] = a[kindIndex];
    55. a[kindIndex] = z;
    56. }


    VB.NET

    Quellcode

    1. 'Die Implementierung wurde der JAVA-Version nachempfunden
    2. ''' <summary>
    3. ''' sortiert ein Array mit heapsort
    4. ''' </summary>
    5. ''' <param name="a">Das Array</param>
    6. ''' <remarks></remarks>
    7. Private Sub heapSort(ByRef a As Integer())
    8. generateMaxHeap(a)
    9. 'hier wird sortiert
    10. For i As Integer = a.Length - 1 To 0 Step -1
    11. vertausche(a, i, 0)
    12. versenke(a, 0, i)
    13. Next
    14. End Sub
    15. ''' <summary>
    16. ''' Erstellt einen MaxHeap Baum im Array
    17. ''' </summary>
    18. ''' <param name="a">das array</param>
    19. ''' <remarks></remarks>
    20. Private Sub generateMaxHeap(ByVal a As Integer())
    21. 'starte von der Mitte rückwärts.
    22. For i As Integer = CInt(a.Length / 2 - 1) To 1 Step -1
    23. versenke(a, i, a.Length)
    24. Next
    25. End Sub
    26. ''' <summary>
    27. ''' versenkt ein element im baum
    28. ''' </summary>
    29. ''' <param name="a">Das Array</param>
    30. ''' <param name="i">Das zu versenkende Element</param>
    31. ''' <param name="n">Die letzte Stelle im Baum die beachtet werden soll</param>
    32. ''' <remarks></remarks>
    33. Private Sub versenke(ByVal a As Integer(), ByVal i As Integer, ByVal n As Integer)
    34. While i <= (n / 2 - 1)
    35. Dim kindIndex As Integer = (i + 1) * 2 - 1 'berechnet den Index des linken kind
    36. 'bestimme ob ein rechtes Kind existiert
    37. If kindIndex + 1 <= n - 1 Then
    38. 'rechtes kind existiert
    39. If a(kindIndex) < a(kindIndex + 1) Then kindIndex += 1 'wenn rechtes kind größer ist nimm das
    40. End If
    41. 'teste ob element sinken muss
    42. If a(i) < a(kindIndex) Then
    43. vertausche(a, i, kindIndex)
    44. i = kindIndex
    45. Else : Exit While
    46. End If
    47. End While
    48. End Sub
    49. ''' <summary>
    50. ''' Vertauscht die arraypositionen von i und kindIndex
    51. ''' </summary>
    52. ''' <param name="a">a Das Array in dem getauscht wird</param>
    53. ''' <param name="i">i der erste index</param>
    54. ''' <param name="kindIndex">kindIndex der 2. index</param>
    55. ''' <remarks></remarks>
    56. Private Sub vertausche(ByVal a As Integer(), ByVal i As Integer, ByVal kindIndex As Integer)
    57. Dim z As Integer = a(i)
    58. a(i) = a(kindIndex)
    59. a(kindIndex) = z
    60. End Sub

    Die C# und VB.NET-Implementierungen wurden von mir übersetzt.


    Es gibt allerdings auch noch Unterschiede in der OOP-Syntax usw.
    Von meinem iPhone gesendet
    Also was ich jetzt recht gewöhnungsbedürftig finde ist, dass man den Text von einem Button nicht via:
    button1.text = "blabla"; sondern mit button1.settext("blabla"); machen muss. Komischer Syntax...
    Jetzt schnell und einfach das Zehnfingersystem mit Scribble 3 erlernen. Mehr Informationen und Download gibts hier. Redundancy2 - leichtgewichtige freie Cloudsoftware. Folge mir auf GitHub
    Ich finde, die Java IDEs sind nicht so der Knaller. Sonst mag ich Java lieber, bin aber auch von VB.net. D.h. C# habe ich mir noch nicht wirklich angeguckt, sehe darin aber nur VB.net mit C Syntax.

    Java ist sehr objektorientiert.

    MFG Solaris
    Ok.. C# sah für mich am Anfang aus wie ein wirres gestrüpp von {} :-).
    Jedoch nach kurzer Eingewöhnungszeit blingt man doch schon schneller durch.
    Jetzt schnell und einfach das Zehnfingersystem mit Scribble 3 erlernen. Mehr Informationen und Download gibts hier. Redundancy2 - leichtgewichtige freie Cloudsoftware. Folge mir auf GitHub
    Javaprogramme sind generell hässlich, da sie nicht das Systemdesign annehmen können. Java ist langsam und frisst im Vergleich viel Resourcen. Java hat nur scheiß IDE's. Mit C# kann man mindestens genau das gleiche wie mit Java machen. Java läuft zwar auf jedem Betriebsystem, aber C(++) auch, und das sogar viel besser.
    Java = Schei*e.

    MfG
    Aber C++ musst du für jedes OS neu kompilieren.
    Java ist sehr ähnlich zu .NET. Beide werden in einen Bytecode gewandelt und dann in einer VM ausgeführt. Würde Microsoft .NET open-source machen und auf andere Betriebssystem portieren (als ob das jemals geschehen würde :D), wäre es genau so gut/schlecht wie Java.

    lg SeriTools
    | Keine Fragen per PN oder Skype.
    Aber werweiß ob C# auch mal betriebssystemunabhängig wird....
    Ide's für Java sind wirklich grausam..
    .net ist doch opensource o.O?!
    Jetzt schnell und einfach das Zehnfingersystem mit Scribble 3 erlernen. Mehr Informationen und Download gibts hier. Redundancy2 - leichtgewichtige freie Cloudsoftware. Folge mir auf GitHub
    Ich persönlich bevorzuge .NET. Java 7 kommt bald raus(/ist schon draußen?). Egal, am Speichermanagement von Java wird sich nicht viel geändert haben.

    JDownloader verbraucht im Leerlauf ohne Downloads mehr RAM als ein Firefox oder Chrome mit 20 Tabs und ist trotzdem todes lahm. Da gewinnt der Garbagecollector aus .NET deutlich.

    Zudem werden die .NET Fameworks über das Windows Update bzw. die Servicepacks eingespielt. Dies ist bei Java nicht der Fall.

    Es gibt meines Wissens keine IDE, die es mit Visual Studio aufnehmen kann. ;)

    Und ja, der Code des Frameworks ist Opensource, allderings unter einer strengen Lizenz.
    de.wikipedia.org/wiki/.NET#Offenlegung_des_Quellcodes


    Ich warte immer noch auf den WPF-4.0-.NET-Downloader mit Windows7-Integration. :)
    Von meinem iPhone gesendet
    Eclipse teste ich gleich mal...wenn der Download mal fertig ist. -.-
    @ nikeee13: IDE für .NET, die es mit Visual Studio aufnehmen kann: #Develop. Damit habe ich bisher immer gearbeitet. Visual Studio ist bei mir so lahm :(
    Jetzt schnell und einfach das Zehnfingersystem mit Scribble 3 erlernen. Mehr Informationen und Download gibts hier. Redundancy2 - leichtgewichtige freie Cloudsoftware. Folge mir auf GitHub
    Schonmal Threading in Java angeguckt? Willst du nicht. Du musst extra ne Klasse schreiben indem du die funktionen erbst.
    in C# ->

    new Thread(() => {HURRDURR;}).Start(); Fertig

    C# hat WPF, DirectX / XNA, Dienste und viele andere "Technologien" von Windows.
    Es ist _Definitiv_ schneller, als Java. C# hat meiner meinung nach schönere Klassen und Namespaces, und an Visual Studio kommt keine IDE ran.
    Wie oben schon geschrieben hat es eigene Controls und nutzt nicht die von Windows.
    Wie Nikeee sagt, JDownloader zum beispiel hat bei mir schonmal über 1500 MB Ram gefressen, das inakzeptabel.
    Wo man jedoch nicht auf die Geschwindigkeit deuten kann, wenn leute nicht Programmieren können.

    /Edit:
    Hatte mal für Android ne App geschrieben. In Java halt, und ich war froh, dass ich mir am Ende nen N900 gekauft hab wo ich C++ und Qt benutzen kann ;)
    Ich hab ja nicht gesagt, dass Eclipse besser ist als VS, nur, dass es gut ist. :D
    JDownloader saugt schon ziemlich. Kackt bei mir eig. jedes dritte Mal ab.

    @nikeee13: Sry 4 forgetting ur BDay. Alles gute zum 18. nachträglich :D

    lg SeriTools
    | Keine Fragen per PN oder Skype.

    Fury schrieb:

    Eclipse teste ich gleich mal...wenn der Download mal fertig ist.
    Mit eclipse hab ich in der Java-AG damsl nur wenig Erfahrungen gemacht. Ich höre aber immer, das diese IDE eine der besten für Java ist.

    Fury schrieb:

    IDE für .NET, die es mit Visual Studio aufnehmen kann: #Develop. Damit habe ich bisher immer gearbeitet. Visual Studio ist bei mir so lahm :-(
    #Develop gegen Visual Studio 2010 Ultimate? Wat? UML-Diagramme? Teamfoundation?
    Gibt's in SharpDevelop eigentlich nen XAML-Designer?
    Von meinem iPhone gesendet
    Ultimate... -.- ....man müsste das Geld dafür haben.
    Aber für mich ist und bleibt das größte Argument für #Develop, dass ich nicht 3/4 meines schon recht knappen Arbeitsspeichers noch opfern muss.
    Jetzt schnell und einfach das Zehnfingersystem mit Scribble 3 erlernen. Mehr Informationen und Download gibts hier. Redundancy2 - leichtgewichtige freie Cloudsoftware. Folge mir auf GitHub