Welche "Sprache" unter all denen ?
#1
geschrieben 31. Mai 2016 - 07:05
ich bin neu hier im Forum aber hoffe das es der richtige Platz ist diese Frage zu stellen.
Und zwar möchte ich gern das "richtige" Programmieren lernen, weiss aber absolut nicht welche Programmiersprache sich lohnt zu lernen.
Immer ein wenig darauf geschaut etwas für Android zu entwickeln würde sich Java anbieten, nun ist es aber ja so das man immer wieder hört das Java am aussterben ist, auch wenn noch viel damit für Android programmiert wird.
Aber auch C# soll ja schon für Android gehen und in hinblick darauf das die ganzen Geräte sich ja auch immer weiterentwickeln und immer mehr Leistung haben stellt sich nunmal die Frage ob sich Java noch lohnt.
Es ist ja auch so das man eine Programmiersprache nicht im vorbeigehen lernt und nach einem halben Jahr z.B. sagen kann ok dann lerne ich halt ne Andere
Ich persönlich nur rein von den Sprachen her gesehen schwanke eben zwischen Java und C# aber was ist z.B. mit Visual Basic und den ganzen anderen Programmiersprachen, welche sind davon aktuel und was kann man damit alles so "anstellen".
Android Anwendungen und auch Desktop Anwendungen für Windows würde ich gern programmieren.
Etwas Erfahrung habe ich mit Webprogrammierung, also HTML, PHP und MySQL aber da liegt auch schon eine etwas größere Pause zwischen beruflich bedingt.
Danke schon jetzt für eure Hilfe.
Anzeige
#2
geschrieben 31. Mai 2016 - 09:50
#3
geschrieben 31. Mai 2016 - 10:08
Kannst du denn bestimmte Seiten oder Bücher vorschlagen die zum lernen von C# gut sind bzw.
die gut geschrieben sind, denn ganz ehrlich zöger ich auch mit Java, aber bei mir nur deswegen weil Java eben sehr viel "langsamer" ist als Programmiersprachen wie z.B. C#.
Das ist ein großer Punkt der mich bei Java recht doll stört.
#4
geschrieben 31. Mai 2016 - 10:20
Allgemein würd ich sagen hängt es vom Einzelnen ab. Ich bin immer noch der Meinung, c-style regiert die Welt; also C/C++, JAVA und JScript, PHP und so weiter und so weiter. Aber, man ist ja nicht drauf beschränkt.
VIEL wichtiger als die ProgrammierSPRACHE ist aber der ANSATZ. Ich habe ein Problem: wie bilde ich dieses Problem auf dem Rechner ab? Ob man das dann in Batch macht oder in FORTRAN ist Jacke wie Bratpfanne.
#5
geschrieben 31. Mai 2016 - 11:09
Also eine Plattformübergreifende Sprache wie Java es ja ist wäre schon super nur erst Java lernen um dann eine andere Sprache zu lernen nur damit es einem vllt. einfacher vorkommt, naja
#6
geschrieben 31. Mai 2016 - 15:47
Waurm ich Java unter der Erde sehen will? Ich mags einfach nicht, die Sprache selbst ist i.o. aber die Runtime ist fürn Hintern. Dazu kommen immer wieder Sicherheitslücken die mit neuen Sicherheitslücken gestopft werden.
So nebenbei:
public class Hello { public static void main(String[] args) { System.out.println("Hello World! "); } }
using System; namespace HelloWorld { class Hello { static void Main() { Console.WriteLine("Hello World!"); } } }
Bsp #1 ist Java, #2 C#. Und auch wenn das die absolute Basis ist, im prinzip gehts genau so weiter, ein Unterschied (laut einem Professor damals im Studium) ist, dass du bei Java getter/setter funktionen machst, während das bei C# verpönt sei. Also sowas im sinne von
class Hello { private string var; public function setVar(string value) { this->var = value; } public function getVar() { return this->var; } }
ist angeblich gaaaaanz böse - hat mich damals ne Note gekostet -.-' (ich hoff dass das so passt, bin derzeit stark von PHP beeinflusst)
#7
geschrieben 31. Mai 2016 - 17:31
#8
geschrieben 31. Mai 2016 - 18:50
Und nein. Es geht natürlich NICHT drum, mit JAVA anzufangen, damit einem der Rest einfacher vorkommt. Es geht darum, daß JAVA sehr streng ist und daß es daher sehr leicht fällt, zu verstehen, was da passiert und wie OO funktioniert. Im krassen Gegensatz dazu PHP ab 5; das macht stattdessen auto-casting wo es kann und DA sieht man dann gar nicht mehr durch als Neuling: warum ist 0 einmal false und einmal NULL und einmal dann aber doch nicht? Warum gibt mysql::query() == "" nicht das was ich wollte? Und so weiter. Mit JAVA passiert sowas nicht.
-- Ach ja. Getter/Setter sind in C# anders implementiert als per getXXX(), das ist tatsächlich verpönt, weil schlicht nicht notwendig. Pseudo-C#:
public string Value get{query(SELECT ELEFANT FROM AFRICA);} set{query(INSERT INTO INDIA (ELEFANT);}
definiert eine simple Eigenschaft Value, die beim Lesen get{} aufruft und beim Schreiben halt set {} und die readonly wird ohne set{} und die writeonly wird ohne get{}.
Dieser Beitrag wurde von RalphS bearbeitet: 31. Mai 2016 - 18:55
#9
geschrieben 31. Mai 2016 - 18:54
Zitat (RalphS: 31. Mai 2016 - 18:50)
Da hast du Recht, bei PHP kenne ich es und von Java habe ich es schon gelesen das es sehr streng reglementiert sein soll
#10
geschrieben 03. Juni 2016 - 23:55
Zitat (RalphS: 31. Mai 2016 - 18:50)
-- Ach ja. Getter/Setter sind in C# anders implementiert als per getXXX(), das ist tatsächlich verpönt, weil schlicht nicht notwendig. Pseudo-C#:
public string Value get{query(SELECT ELEFANT FROM AFRICA);} set{query(INSERT INTO INDIA (ELEFANT);}
definiert eine simple Eigenschaft Value, die beim Lesen get{} aufruft und beim Schreiben halt set {} und die readonly wird ohne set{} und die writeonly wird ohne get{}.
Ja genau so sollte das sein. Auch wenns meiner Meinung nach Jacke wie Hose ist (vor allem wenn der Lektor nur Java Samples hat und herzeigt und nicht sagt wie es in C# gehört hätte aber das ist ein anderes Thema)
und ad PHP: ist doch Lustig wenn 0 0, false NULL oder "0" sein kann
#11
geschrieben 04. Juni 2016 - 07:10
Also mit anderen Worten, sagen wir da ist sowas wie ein private string Field, und dann greifst Du innerhalb der Klasse drauf zu und kriegst $Field zurück, und ansonsten aber das Ergebnis der __get() Funktion. Besonders witzig, daß da auch durchaus auf $Field zugegriffen werden kann, wenn es gar kein solches Attribut gibt ("virtuelles Feld"). Also Du schreibst auf die Eigenschaft Field drauf und wenn es da nix gibt wird eben __set ausgeführt und dann muß __set natürlich auch das richtige tun.
Problem dabei: PHP macht weder Overloading (das ist bei denen eben diese get/set Zugriffsmethode ) noch $Field get; set; sondern da kannst Du genau EINE Funktion __set() und EINE Funktion __get() deklarieren mit der Signatur (string $Feldname, mixed Wert). $ergebnis = $object->Value ruft also __get("Value", $Value) auf und das wars auch. Den Rest darfst dann mit den is_* und switches abhandeln.
#12
geschrieben 04. Juni 2016 - 08:33
Pseudocodes, d.h. nur im Kopf erstellt, oder kopiert.
C#
using System; namespace HelloWorld { class Hello { static void Main() { Console.WriteLine("Hello World!"); } } }
Hier passiert aber schon einiges im Hintergrund, was sich auch kaum bis gar nicht beeinflussen lässt. Auf der anderen Seite, man muss sich auch nicht um wirklich alles selber kümmern.
C++
#include studio.h void main() { printf("Hello World"); }
Dieses Beispiel, was man evtl. auch in Büchern findet, ist aber totaler Müll. Keiner schreibt einen Text in die Konsole, außer in der Schule oder in Büchern. Wenn man etwas in ein Fenster schreiben will, kommen da Zeiger, Speicheranfordungen usw. hinzu, dass ergibt dann ziemlich umfangreichen Code und ist auch fehleranfällig. Dafür passiert dann aber auch so gut wie gar nichts hinter den Kulissen, was man nicht beeinflussen könnte, auch wenn dass die Konsequenz hat, dass man einiges selber machen muss.
Visual Basic/VBA (Das ist jetzt wirklich reiner Pseudocode)
sub hello() Dim A A=createObject.("Word.document") a.document.create "test document" a.document.write "Hello world!" a.document.print end sub
(Keine Ahnung, wie viele Zeilen das in C++ wären, 10000? )
Bei Visual Basic und VBA wird einem also so einiges an Arbeit abgenommen, dieses führt aber auch dazu, dass man da nicht unbedingt, oder nur sehr schwer, Einfluss drauf hat. (Ja, mir ist bewusst, dass VB und VBA nicht das selbe sind)
Hauptbeweggrund für eine Programmiersprache ist für mich also:
1) Der Anwendungsfall, wie in deinem Fall Android
2) Der "Abstraktionslevel"
3) Naja, ich will es mal so formulieren, von jedem ein wenig zu kennen, ist vielleicht nicht so gut wie etwas sehr gut zu kennen. Auch wenn dieses dann evtl. größere Umwege, für das selbe Ergebnis, zu gehen.
Dieser Beitrag wurde von Lastwebpage bearbeitet: 04. Juni 2016 - 08:35
#13
geschrieben 04. Juni 2016 - 10:59
Allerdings ist VB nicht mit VBA zu verwechseln. VBA läuft im Kontext einer Applikation (daher auch das A) und man hat Zugriff auf das Objektmodell dieser Applikation, wie zB eben bei MS Office. Aber schon da hat man das Problem, auf die einzelnen Namensräume zuzugreifen (zumindest bisher; keine Ahnung wie weit die jetzt mit der "gemeinsamen" VBA-Plattform sind).
In VB.NET muß man ebenso wie in C# auch erstmal die benötigten Komponenten einbinden und/oder selber erstellen.
#14
geschrieben 04. Juni 2016 - 13:14
Zitat
Wer erzählt denn den Bullshit?
Grundsätzlich führt die Debatte ins Leere. Es wird sich immer einer finden, der sagt nimm Sprache XY, ich beherrsche mittlerweile:
C, C++, C#, .NET, Java, Python, JavaScript (Script language) und PHP sowie Assembler. Und was bringt das? Naja es kommt auf die Aufgabe/Anwendung drauf an.
Man muss sich da MM auch nicht wirklich beraten lassen. Es ist viel einfacher, man guckt sich die Sprachen der Reihe nach an und guckt, welche einem von der Syntax besser gefällt. Fertig!
Außerdem: Java ist die meist genutzte Programmiersprache (Stand 2016), der Vorteil liegt hier auf der Hand.
Bei VB.NET ist es recht amüsant, dass man dort "fast" Klartext tippen kann und das Programm läuft (Stichwort: Abstraktion).
Dieser Beitrag wurde von Future010 bearbeitet: 04. Juni 2016 - 13:29
#15
geschrieben 05. Juni 2016 - 16:54
Mal sehen ob es mir dann später immer noch so gefällt aber ich denke schon denn normal ziehe ich das durch was ich mir einmal vorgenommen habe.
Kennt ihr evtl. paar Seiten oder auch Bücher die eurer Meinung nach sehr gut zum lernen sind ??