Hallo,
ich habe Visual Studio 2008 und möchte folgende Programmieraufgabe
lösen. Ich habe eine Gui, in der ich zwei Datenbasen als Textdatei
auswählen kann.
In der Datenbasis_01 wird der erste String_01 von oben ausgelesen und in
Datenbasis_02 gesucht, wobei der String_01 in Datenbasis_02 wiederum ein
Teil von einem String_02 ist. Anschließend werden alle weiteren
String_01 so in Datenbasis_02 gesucht...Was noch passiert ist erstmal
unwichtig...
Womit ist es jetzt besser zu programmieren, mit MFC, C# oder VB ???
Ich würde dir vorschlagen, alle Sprachen einmal anzugucken.
Dann nimmst du die Sprache, die du am schönsten findest.
Deine Aufgabe lösen können alle!
So einen Thread sollte man gar nicht erst starten.
Das werden wieder 50000 Seiten und am Ende ist es genau wie am Anfang!
Diskussionenspunkte die ich hier noch erwarte:
- Aber Microsoft ist bööööse!
- Nimm C++, denn das ist vieeeeel schneller
- Nimm bloß kein C#, denn das kann ABCXYZ nicht!
- Wenn du Visual Basic nimmst wirst du dein Problem nie lösen
- Aber in C# kann ich meine Array noch schneller iterieren
Zu den Sprachen an sich:
Die sind wirklich alle fast gleich, denn sie basieren alle auf dem
Microsoft .NET Framework!
Mit freundlichen Grüßen,
Valentin Buck
Programmiere, womit Du programmieren kannst.
Die "Aufgabe" kann mit praktisch allen Programmiersprachen erfüllt
werden.
MFC ist übrigens keine Programmiersprache, das ist eine
Klassenbibliothek für C++.
Du musst also unterscheiden:
"echtes" C++
C++/CLI (früher "managed C++"), setzt auf .Net auf
C# setzt auf .Net auf
VB setzt auf .Net auf
"echtes" C++ kann, muss aber nicht, mit MFC genutzt werden. Statt der
MFC lassen sich auch komplett andere Klassenbibliotheken wie wxWidgets
oder Qt nutzen -- wobei die drei den Schwerpunkt auf graphische
Benutzeroberflächen legen. In "echtem" C++ lässt sich natürlich auch
boost nutzen.
Und wir nähern uns Punkt 2!
Yay!
Allerdings hat Rufus T. Firefly recht!
Das ganze gibt es entweder als MFC oder als CLR (Common Language
Runtime), wo du dann auch die ganzen .NET Klassen (Umfang etwa wie bei
Java, mit managed Direct X und managed Open GL deutlich mehr) hast.
Ich habe alle drei Visual Studio Express Editions und benutze sie je
nach Einsatzzweck.
Mit freundlichen Grüßen,
Valentin Buck
Solche Fragen kämen gar nicht erst auf, wenn der OP überhaupt schon in
irgendwas programmieren könnte (Unterstellung, liest sich aber genau
so!).
Dann würde er nämlich genau dafür erstmal eine Lösung suchen.
Ich kann meinen 2 Vorrednern nur zustimmen .... also, am Ende ist es
Deine Wahl, und die Frage, welche Programmiersprache Du am besten
wählst, endet schlimmstenfalls in Flamewar.
Ich habe mich damals einfach fuer Microsoft Visual Studio C++ Express
entschieden, und damit auch ans Ziel gekommen. Liegt Dir eine andere
Sprache mehr, dann probier halt die.
Hat das geholfen? Nein - na dann kannste ja schreiben, welche Sprachen
Du kannst und schon programmiert hast. Und wo (beim Probieren mit dem
Visual Studio) Probleme auftraten. :-)
Viel Erfolg! - Es ist imho leichter, einfach mal zu probieren anstatt
andrer Leute Meinung abzuwarten, sich damit auseinander zu setzen und
dann durchzustarten. Zumindestens in diesem Fall. :-)
Also,
unter der Annahme, dass du noch keine Programmiersprache richtig kennst
und gerade neu einsteigst und auch nicht auf irgendwelche
Kompatibilitäten achten musst gibt es auf deine Frage nur eine Antwort:
Nimm C#
franz schrieb:> Ich habe mich damals einfach fuer Microsoft Visual Studio C++ Express> entschieden, und damit auch ans Ziel gekommen.
Und wofür hast Du Dich da entschieden? Das ist kein Sprache, sondern ein
Compiler für sogar drei unterschiedliche Programmiersprachen:
C
C++ ("echtes C++")
C++/CLI bzw. "Managed C++", setzt auf .Net auf
Da ich viel mit Array-Strings mache (Pointer), dachte ich an C++ mit
MFC. Aber es muss ja auch mit C# gehen, vor allem hab ich mir grad
WindowsForms angesehen. Ist WindowsForms die Weiterentwicklung von MFC?
Nash schrieb:> Ist WindowsForms die Weiterentwicklung von MFC?
Nein, die haben überhaupt nichts miteinander zu tun. MFC ist eine
C++-Klassenbibliothek, die "echtes" C++ voraussetzt, WindowsForms setzt
auf .Net auf und ist daher nur aus .Net-Sprachen sinnvoll nutzbar.
C++/CLI heißt zwar C++, hat aber nur oberflächliche Ähnlichkeiten zu
C++.
Einem Programmieranfänger würde ich heute nicht mehr dazu raten, sich in
die MFC einzuarbeiten, zwar hat Microsoft mit VS2010 endlich mal wieder
mehr für die MFC-Unterstützung getan, aber die MFC ist trotzdem als
"angezählt" zu betrachten.
Außerdem ist die MFC nicht mit dem kostenlosen Visual C++ Express
nutzbar.
Wenn jemand "echtes" C++ lernen möchte, halte ich es für ratsam, eine
hersteller- und plattformunabhängige Klassenbibliothek à la Qt oder
wxWidgets zu nutzen.
Wenn es nur darum geht, unter Windows zu programmieren, dann kann man
sich natürlich auch von der .Net-Welt becircen lassen.
Dann (und nur dann) ist auch sowas wie WindowsForms nutzbar.
Die Programmiersprache aber ist dann C++/CLI (oder eine der anderen
.Net-Sprachen) und hat mit C++ wenig mehr als den Namen gemein.
Nash schrieb:> Hallo,> ich habe Visual Studio 2008 und möchte folgende Programmieraufgabe> lösen. Ich habe eine Gui, in der ich zwei Datenbasen als Textdatei> auswählen kann.> In der Datenbasis_01 wird der erste String_01 von oben ausgelesen und in> Datenbasis_02 gesucht, wobei der String_01 in Datenbasis_02 wiederum ein> Teil von einem String_02 ist. Anschließend werden alle weiteren> String_01 so in Datenbasis_02 gesucht...Was noch passiert ist erstmal> unwichtig...>> Womit ist es jetzt besser zu programmieren, mit MFC, C# oder VB ???
F#
Liefert das passende Array von Tupeln zurück. Jedes Tupel besteht aus
dem String aus a1 und einem möglicherweise leeren Array mit Strings aus
a2 die den gesuchten String aus a1 enthalten.
Ähnlich einfach geht's nur mit LINQ in C# oder VB.
Nash schrieb:> Hallo,> ich habe Visual Studio 2008 und möchte folgende Programmieraufgabe> lösen. Ich habe eine Gui, in der ich zwei Datenbasen als Textdatei> auswählen kann.> In der Datenbasis_01 wird der erste String_01 von oben ausgelesen und in> Datenbasis_02 gesucht, wobei der String_01 in Datenbasis_02 wiederum ein> Teil von einem String_02 ist. Anschließend werden alle weiteren> String_01 so in Datenbasis_02 gesucht...Was noch passiert ist erstmal> unwichtig...
ich kann dem nicht so ganz folgen.
Für mich hört sich das so an, wie grep in einer schleife aufrufen.
inPerl ein 10-Zeiler , aber ohne GUI
edit:
Arc Net schrieb:> F#
Wollte ich eigentlich auch schon vorschlagen, aber dann muss Nash erst
auf VS 2010 updaten, und ich bin mir nicht sicher, ob F# auch in einer
Gratisversion von VS mit dabei ist.
Mit der letzten Zeile lässt sich übrigens noch schön golfen :)
Mittels partial Function Application kannst du sicher das zweite Lambda
wegbekommen, so dass die Zeile kürzer und übersichtlicher wird. Ich kann
kein F#, deswegen ist hier der entsprechend Ausdruck in Haskell, bei dem
ich mit etwas syntaktischem Zucker auch das erste Lambda und eine ganze
Reihe von Klammern eliminiert habe:
1
[(s1, filter (isInfixOf s1) a2) | s1 <- a1]
Jetzt kann das fast schon ein Haskell/F#-Unkundiger verstehen ;-)
Yalu X. schrieb:> Mit der letzten Zeile lässt sich übrigens noch schön golfen :)
;-)
> Mittels partial Function Application kannst du sicher das zweite Lambda> wegbekommen, so dass die Zeile kürzer und übersichtlicher wird. Ich kann> kein F#, deswegen ist hier der entsprechend Ausdruck in Haskell, bei dem> ich mit etwas syntaktischem Zucker auch das erste Lambda und eine ganze> Reihe von Klammern eliminiert habe:>>
1
> [(s1, filter (isInfixOf s1) a2) | s1 <- a1]
2
>
>> Jetzt kann das fast schon ein Haskell/F#-Unkundiger verstehen ;-)
In Haskell ist häufig der Weg das Ziel :-)
Arc Net schrieb:> In Haskell ist häufig der Weg das Ziel :-)
Nein, genau das Gegenteil: Je kürzer der Weg (der Programmcode), desto
besser. Und fast immer dient die Kürze auch der Übersichtlichkeit,
genauso wie das Vermeiden vieler verschachtelter Klammern. Ausnahmen
bestätigen die Regel ;-)
Aber das ist in F# doch genauso. Es ist sicher nicht primär eine
Geschmacksfrage, wenn einem dieses
Yalu X. schrieb:> Arc Net schrieb:>> In Haskell ist häufig der Weg das Ziel :-)>> Nein, genau das Gegenteil: Je kürzer der Weg (der Programmcode), desto> besser. Und fast immer dient die Kürze auch der Übersichtlichkeit,> genauso wie das Vermeiden vieler verschachtelter Klammern. Ausnahmen> bestätigen die Regel ;-)
So (drastisch) sollte das nicht gemeint sein, sondern eher ausdrücken
das
1) mehr (und hin und wieder zu viel) auf den Stil/die Eleganz wert
gelegt wird
2) meistens schon die saubere Formulierung reicht, um zu sehen/zeigen
das die Funktion korrekt ist
> So, jetzt bin ich mal gespannt, ob Nash sich schon ein VS 2010 besorgt> hat, um in den Genuss von F# zu kommen ;-)
p.s. mal sehen wie viele Unis hier mitziehen: Die CMU fängt im
Grundstudium mit Standard ML und (einem Subset von) C an. Kein Java,
kein C++ etc.
http://existentialtype.wordpress.com