Algorithmen lernen

Diskutiere Algorithmen lernen im Java Basics - Anfänger-Themen Bereich.
J

JustNobody

@JustNobody dem Arbeitgeber ist grundsätzlich egal in welcher Sprache man Kenntnisse besitzt, ich habe halt mal mit JavaScript begonnen und dann die Möglichkeit bekommen meine Grundkenntnisse im Job auszubauen, was ich nun auch so rasch wie möglich unter Beweis stellen möchte. Welches Vorgehen würdest du mir empfehlen?
Dann wäre meine Empfehlung, da erst einmal etwas dabei zu bleiben und Dir dann an Hand von JavaScript die Grundlagen bei zu bringen. JavaScript ist in meinen Augen aber etwas "unsauber", denn es bietet leider nicht die Typsicherheit, die z.B. Java hat. Das macht es in meinen Augen etwas problematischer, aber das ist kein Hinderungsgrund.

Daher: Bau das erst mal aus. Dazu gehört dann, JavaScript wirklich zu lernen und damit Algorithmen umzusetzen! Und dazu gehört auch, eine vernünftige Arbeitsumgebung für sich selbst zu haben. Da kann ich aber nicht wirklich helfen, denn ich bin kein JavaScript Experte. Wichtige Dinge sind da auch meiner Sicht:
- Code Versionierung -> Schau dir z.B. git an.
- IDE / Debugger -> Google Chrome hat z.B. einen Debugger für Entwickler, aber evtl. lohnt sich eine Recherche, wie andere Entwickeln und was da z.B. Editieren. Es würde mich stark wundern, wenn es da keine guten Entwicklungsumgebungen gibt. (Visual Studio Code vielleicht oder WebStorm von JetBrains oder vielleicht hat da jemand anderes eine Idee ....)

Wenn man da Grundlagen hat, dann kann man sich anschauen, wie man da weiter vorgehen möchte:

a) Die Entwicklung könnte z.B. Richtung Angular oder so gehen. -> Frameworks gibt es viele. Angular ist nur eine Möglichkeit. React fällt mir noch ein ... aber da gibt es bestimmt Leute, die Dich besser beraten können ....

b) Falls Stand Alone Applikationen gewünscht werden. Da gibt es dann Tool-Sets, die z.B. Zugriff auf das Dateisystem zugreifen. Da gibt es dann viele Möglichkeiten je nach Umgebung, z.B. Electron für Desktops aber Apache Cordova für mobile Applikationen.

c) Clean Code - es gibt bestimmt einiges zu dem Thema Clean Code bei JavaScript. Was sollte man machen und was sind ggf. Totsünden? Gibt es da sowas wie einen "Expliziten" Modus, so dass man Variablen vor Nutzen deklarieren muss oder so? (Ich bin da absolut unbedarft, sorry). -> Das ist also auf jeden Fall auch wichtig, damit man guten Code schreibt. Unter diesen Punkt würde dann auch fallen, wie man "objektorientiert" JavaScript schreiben kann ...

Was Du wie machen willst richtet sich evtl. etwas nach den Anforderungen des Arbeitgebers oder der evtl. bereits vorhandenen Infrastruktur. Wenn bei Deinem Arbeitgeber z.B. einige Produkte mit einem Webservice vorhanden sind, dann wäre denkbar, darauf aufzubauen um so Workflows abzubilden oder so ...

Das wäre eine generelle Möglichkeit des Vorgehens, wenn du mit JavaScript weiter machen willst. Aber man kann auch komplett wechseln auf eine andere Plattform. Aber das würde ich dann als kompletten Wechsel ansehen und dann würde ich nicht parallel zwei Sprachen machen (für eine gewisse Zeit und wenn es nicht sein muss, dann würde ich das generell lassen. Es gibt genug zu lernen und zu vertiefen :) ).
 
W

White_Fox

Eine zweite Sprache zu lernen, wenn so ein Basic in der ersten Sprache nicht klappt, halte ich für extrem fatal.
Dem kann ich nur beipflichten. In wenigstens einer Sprache sollte man erstmal sicher sein und überhaupt ein tieferes Verständnis vom Programmieren an sich gewinnen. Bitte nicht falsch verstehen, aber ich denke daß du da noch einiges für dich tun kannst.

Auch wenn ich mehrere Sprachen kenne (und mir durchaus zutraue ein kleineres Projekt damit zu beginnen): wenn ich eine Sprache länger nicht mehr benutzt habe (oder gar der Zwischenzeit reichlich mit einer anderen Sprache gearbeitet habe), suche ich mir relativ häufig wieder syntaktische Grundlagen zusammen.

Aber meiner Meinung nach hängt das "Können" einer Sprache nur minimal von der Kenntnis ihrer Syntax ab. Es gibt Dinge, die wiegen da weitaus schwerer.

Obwohl Java und JavaScript sicherlich nicht zu vergleichen ist, kann man zumindest von der Syntax her teilweise ein paar Ähnlichkeiten erkennen, das ist zumindest was ich für mich erkennen konnte.
Nun, ich weiß nicht genau wo du da Ähnlichkeiten in der Syntax siehst.

C und C++ sind Sprachen, die Java syntaktisch sehr ähnlich sind, unterscheiden sich jedoch gravierend. C ist rein prozedural (wobei es Leute gibt die behaupten, man könne mithilfe einer merkwürdigen Definition von Objektorientierung und unter gewaltigen Schmerzen auch in C objektorientiert programmieren), C++ dagegen objektorientiert. Man hat über die Zeit C++ immer wieder erweitert und Sprachmittel aus Java und C# versucht zu implementieren (und daher ist diese Sprache heute unfassbar aufgeblasen).

Andererseits hat man in Java einige Designfehler aus C++ weggelassen (so unterstützt Java z.B. keine Mehrfachvererbung) was wiederum dazuführt, daß für eine Softwarearchitektur in beiden Sprachen völlig andere Werkzeuge zur Verfügung stehen.
Auch mit Pointerarythmetik kommt man in Java nicht weit - Pointer gibt es in diesem Sinne in Java nicht. Bzw. gibt es doch, das Konzept ist aber ein völlig anderes.

Das sind Unterschiede, die eine Sprache ausmachen (und die man erst so richtig lernt, wenn man eine Weile damit gearbeitet hat), die man kennen sollte und die man nicht so einfach googeln kann.

Was dich allerdings nicht davon abhalten soll, später, wenn du sattelfester bist, eine zweite (und am besten dritte, vierte, fünfte und sechste) Sprache zu lernen.
 
M

M.L.

ich habe halt mal mit JavaScript begonnen
Der umgekehrte Weg von den Anforderungen auf die Programmiersprache zu kommen, wäre wohl besser gewesen. Zusätzlich zu JavaScript: es gibt den "strict mode" https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Strict_mode
Und als Weiterentwicklung TypeScript: https://entwickler.de/online/javascript/web-app-tutorial-typescript-javascript-579888415.html (u.a. mit besseren OO-Ansätzen)
Webframeworks: Angular(JS) (hat aber eine hohe Lernkurve), React.js, Vue.js, Node.js
 
D

darth345

Vielen Dank für eure Antworten und euer Feedback.

Dann werde ich wohl nochmal die "Schulbank" drücken und meine Grundkenntnisse in JavaScript versuchen weiter auszubauen. Vielleicht bekomme ich ja bei der Arbeit dann den ein oder anderen Hinweise wie ich das mit dem tieferen Verständnis besser hin bekomme, vermutlich brauch es aber auch einfach Zeit wies scheint.

Danke für eure Hilfe einstweilen

Lg

PS:. Wenn ihr noch Tipps oder tolle Quellen für Anfänger hättet wäre ich euch sehr dankbar.
 
Zuletzt bearbeitet:
T

thecain

Typescript ist doch keine Weiterentwicklung von Javascript... Typescript kann mithilfe eines Compilers zu Javascript kompiliert werden. Browser können Typscript aber nicht direkt ausführen
 
J

JustNobody

Transpilers oder auch S2S compiler. Gerade bei den Grundlagen finde ich die richtigen Begriffe unerlässlich.
Also genau diese Ausprägung ist uninteressant in meinen Augen. Das muss man nicht zwingend wissen.

Also zum einen: Compiler ist kein falscher Begriff, denn das von Dir genannte sind nur Ausprägungen eines speziellen Compilers.

Aber ob das Ergebnis nun für Menschen lesbar ist oder nicht (Das ist bei der Source Code Definition zumindest nach Wikipedia das ausschlaggebende) ist schwer zu definieren und wenn ich etwas entwickle auch vollkommen uninteressant, denn den Zwischenschritt wird man hoffentlich nie betrachten müssen.
 
X

Xyz1

Compiler ist kein falscher Begriff
Compiler IST der falsche Begriff dafür, da ein Transpiler etwas komplett anderes macht.
Bitte versuche doch nicht schonwieder Aussagen zu verdrehen.

Ich finde es ja auch ganz schrecklich, wenn jemand etwas Falsches sagt - und man ihn dann auch noch darauf hinweisen muss...
 
J

JustNobody

Compiler IST der falsche Begriff dafür, da ein Transpiler etwas komplett anderes macht.
Also nach Deiner Aussage ist ein Transpiler ein S2S Compiler. Somit handelt es sich bei einem Transpiler auch um einen Compiler.

Das ist so, als ob jemand sagt: Das ist ein Tier und Du dann meinst: Nein, das ist kein Tier, das ist eine Katze!

Sorry, wenn Du Begriffe nicht kennst, dann lies diese bitte einmal nach! Oder bring klare Definitionen! Damit Du so einfache Dinge aber auch lernst einfach einmal die Begriffe erläutert anhand der Wikipedia Artikel!

Compiler - mögliche Definition von Wikipedia: "A compiler is a computer program that translates computer code written in one programming language (the source language) into another language (the target language)."
==> Der TypeScript Compiler ist somit natürlich ein Compiler nach dieser Definition, denn
a) ist es ein Computer Programm
b) es übersetzt etwas von einer Sprache (Typescript)
c) in eine andere Sprache (Javascript)

==> Compiler ist damit auf jeden Fall ein korrekter Begriff.

Source 2 Source Compiler (auch Transpiler genannt): "A source-to-source compiler (S2S compiler), transcompiler or transpiler is a type of compiler that takes the source code of a program written in a programming language as its input and produces the equivalent source code in the same or a different programming language."

Also als erstes eine klare Aussage, dass es sich um eine Art von Compiler handelt. Damit ist ein Transpiler ein Compiler.
Und die Spezifikation ist lediglich, dass das Ziel Source Code einer Programmier Sprache ist.

Source Code - mögliche Definition von Wikipedia: "In computing, source code is any collection of code, possibly with comments, written using[1] a human-readable programming language, usually as plain text." ==> Also wichtiges Merkmal ist "human-readable programming language".

==> Damit entscheidet lediglich, dass etwas von Menschen lesbar ist, ob etwas ein Source Code ist oder nicht.

Und da kommt dann tatsächlich die Frage auf: Was ist "von Menschen lesbar" - zumal ja die Hilfsmittel nicht benannt sind, eine Datei mit Java Code ist auch nur mit Hilfsmitteln lesbar für Menschen. Die Bytes müssen dafür zu Buchstaben abgebildet werden. So kann aber evtl. ein Hilfsprogramm vielleicht Bytecode auch visuell darstellen. Dann wäre der Java Compiler streng genommen auch ein Transpiler. Daher: Ich denke es ist schwer, hier klare Grenzen aufzuzeigen oder zu ziehen.

Bitte versuche doch nicht schonwieder Aussagen zu verdrehen.

Ich finde es ja auch ganz schrecklich, wenn jemand etwas Falsches sagt - und man ihn dann auch noch darauf hinweisen muss...
Ich denke, Deine Aussagen sind extrem deutlich und wie ich aufgezeigt habe auch schlicht falsch. Wenn Du Definitionen von Begriffen nicht kennst, dann verwende diese schlicht nicht. Vor allem wirf Anderen bitte nicht vor, dass diese etwas Falschen sagen würden. Ansonsten gilt hier wie bei allen diesen tollen Diskussionen mir Dir:

Interessante Meinung, darfst Du gerne auch weiterhin haben. Ich habe eine andere Meinung und ich habe diese auch durchaus belegt. Vielleicht begründest Du, wieso ein S2S Compiler in Deinen Augen nicht als Compiler bezeichnet werden darf / eben kein Compiler ist?
 
J

JustNobody

Du bist einfach nur ein Clown. JA, die Seite hat einigen Text. Hast Du Probleme zu verstehen. Aber ändert nichts daran, dass da nicht steht, dass ein S2S Compiler kein Compiler ist.

Da wird etwas abgegrenzt gegenüber "traditional compiler", das da genannt wurde - da mag man Dir evtl. zu Gute halten wollen dass Du das in das Wort Compiler hinein interpretierst. Aber dafür habe ich auch die Definition von Compiler gebracht.

Und wir können ja auch mal schauen, wie es andere bezeichnen. Vielleicht willst Du mal bei https://www.typescriptlang.org/ vorbei schauen ... Die sind auch alle so blöd und nennen das auch Compiler....

Also muss wirklich hart sein: So viele Andere, die einfach nicht Deine Genialität haben und alles falsch sagen und auch noch so daran festhalten.... Und dann auch noch über Dich lachen und Dich als dummen Anfänger mit massiven Problemen im Textverständnis sehen ... Ja, so Genialität wird einfach nicht erkannt ... ein schweres Los ...
 
X

Xyz1

Du bist einfach nur ein Clown. JA, die Seite hat einigen Text. Hast Du Probleme zu verstehen. Aber ändert nichts daran, dass da nicht steht, dass ein S2S Compiler kein Compiler ist.
Wie wärs mit Lesen?

A source-to-source compiler (S2S compiler), transcompiler or transpiler ...
 
M

Meniskusschaden

Compiler IST der falsche Begriff dafür, da ein Transpiler etwas komplett anderes macht.
o_OWie bitte? Du hast tatsächlich die Ist-ein-Beziehung nicht verstanden? Die ist doch eigentlich ziemlich einfach. Wie wär's mal mit einem Anfängerkurs in objektorientierter Programmierung? Da lernt man so etwas.;)
 
X

Xyz1

Da lernt man so etwas
Da das hauptsächlich nicht Auszeichnungssprachen betrifft ist diese Aussage auch falsch.

Leute, sobald ihr merkt dass ihr falsch liegt versucht doch nicht auch noch alles "abzustreiten". Anfängern (aus der eigenen Unkenntnis...) falsche Begriffe vermitteln zu wollen sehe ich eben als problematisch...
 
J

JustNobody

Wie wärs mit Lesen?

A source-to-source compiler (S2S compiler), transcompiler or transpiler ...
Das war der Anfang des Satzes .... bite einmal den ganzen Satz lesen! ... Den ganzen Satz habe ich übrigens bereits zitiert....
Dann kommt da noch etwas von wegen " is a type of compiler" ... also klare Aussage: Es ist ein Compiler ..,

Bring einmal den ganzen Satz und beschreibe uns, was er Deiner Meinung nach bedeutet. Wir helfen gerne beim Verständnis von so technischen Texten!
 
M

Meniskusschaden

Cool, ich dachte, die Bibel wäre The Art of Computer Programming von Donald E. Knuth.
Das dachte ich auch. Jedenfalls hat das bei mir gerade eine kleine Retro-Welle ausgelöst und mir fiel wieder ein, dass 2001 im ehemaligen Bundestag in Bonn die Konferenz software pioneers stattfand, wo jede Menge wirklich bekannter Informatiker weit zurück blickende Vorträge gehalten haben. Inzwischen sind schon wieder fast 20 Jahre vorbei. Knuth war leider nicht dabei. Aber beispielsweise im Vortrag über B-Bäume erwähnt Bayer, dass deren Bedeutung zunächst nicht erkannt wurde, so dass sie Probleme hatten, ihre Ergebnisse zu veröffentlichen, bis sie sich schließlich an Knuth wandten. Auf der Konferenzseite kann man sich alle Videos inkl. Folien ansehen. Vielleicht ist das für den Einen oder Anderen noch von Interesse.
 
X

Xyz1

Ich würd ja noch gerne mitdiskutieren, aber hier steht zu viel Dünnpfiff von @JustNobody - also kein Klima in dem man sich lange aufhalten möchte.

Richtige Begrifflichkeiten werden auf einmal als falsch dahingestellt - da fragt man sich wirklich was bei euch nicht stimmt.
 
T

thecain

Du hast das falsch verstanden, er hat einen nicht falschen Begriff, als OK betitelt. Das S2S Compiler oder Transpiler falsch sei hat niemand behauptet.

Danke für den Hinweisen @Meniskusschaden werd ich mir sicher mal anschauen
 
X

Xyz1

Und weswegen dann diese ellenlange Abhandlung über einen einfachen Begriff? Ich denke nicht dass diese notwendig wäre. Zudem bewegt sich das zu weit weg der Eingangsfrage.
 
Thema: 

Algorithmen lernen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Anzeige

Anzeige
Oben