Der Programmier-Thread

Zum Thema Java. Ich habe mich fuer mein naechstes Projekt fuer Java als Backend-Technologie entschieden. Ziel ist es, eine Anwendung zu bauen die auf allen moeglichen Platformen lauft (Windows, Mac, Linux, Android, iOS offline und auf jedem Webbrowser online). Als Frontend-Technologie wird auf HTML5 und JavaScript gesetzt (wahrscheinlich Backbone/React.js)... bei der Backend-Logik habe ich mich allerdings nach viel hin und her gegen JavaScript entschieden.

JavaScript im Backend (speziell die ganze Node.js-Geschichte) ist mir noch alles viel zu sehr in Bewegung, es ist momentan nicht klar wie die Node.js-Welt in 2-3 Jahren ausschaut... das ist ok fuer kleinere Projekte, aber nichts was strategisch auf die naechsten 10 Jahre ausgelegt sein muss. Und es ist auch schwierig das Node.js-Environment unter iOS zum laufen zu bekommen, da es eigentlich nur als reine Server-Technologie ausgelegt ist, also fuer den Anwendungsfall etwas ungeeignet.

Java stellt sich als ganz gute bewaerhrte Technologie im Backend-Bereich heraus:

- Windows, Mac und Linux laufen dank JVM

- Android laeuft, weil es dort die native Sprache zur Entwicklung ist

- iOS laeuft dank RoboVM

- Server laeuft, Java hat vor allem im Webserver-Backend-Bereich eine sehr gute Verbreitung

Zuletzt spielt auch der Tooling-Support eine Rolle, IntelliJ IDEA ist eine exzellente IDE zur Java-Entwicklung. Es stellt sich raus, wenn man den ganzen langsamen XML-verseuchten Enterprise-Muell ignoriert, kann man mit Java auch was relativ modernes und performantes aufbauen.

Also werde ich das naechste Jahr ueber Frontend HTML5/JavaScript und Backend Java machen. Hab schon viel kleine Sachen in Java gemacht, aber noch nie riesig grosse Projekte, also wird wieder eine Erfahrung mehr.
 
Nun kann ich nicht ganz folgen, meinst du Java deshalb, weil du es für alle Plattformen nutzen kannst, oder willst du deinen Back-End Code auf allen Plattformen laufen lassen? Das Spiel was ich mal in Java machen musste reicht mir für einige Zeit. Ich bleib erst Mal bei Node (trotz io.js Kontroverse, die sich vll. irgendwann erledigt)/JS für meinen privaten Kram, ich finde es noch immer sehr interessant.

Spring kann ich mir noch gut vorstellen als Back-End Framework, prinzipiell ist es abhängig von der Anwendung, die damit betrieben werden soll (Mehr Cloud -> Go, Haskell, es gibt ja soviel). Die läuft eher schlecht als Recht auf dem Java Backend, kann aber auch an den miesen Skills der Entwickler liegen.

@crack
Ich habe mit Java angefangen und um die Konzepte des Programmierens zu erfassen, ist die Sprache denkbar ungeeignet (Fake Class und main Methode nötig um überhaupt was angezeigt zu bekommen, gleich OO um die Ohren geknallt). Typen sind gut für große Projekte, aber um die ersten Schritte zu gehen halte ich zB Python für angenehmer, zudem lernt man gleich richtig Whitespace zu setzen. Oder R, dann kann man etwas Statistik betreiben.
 

Planet

50% water, 50% air, the glass is always full!
PSN-Name: PlanetJumble
Mit Grails als Backend und Angular JS für den Client kann man echt tolle Anwendungen stricken. Angular ist nicht so einfach zu verstehen und Grails hat so seine Bugs, aber es erleichtert die Entwicklung ungemein, sich nicht mehr um jeden kleinen Scheiss selbst kümmern zu müssen und dennoch die volle Kontrolle zu haben. ~happy~
 
Spielt gerade: Persona 3 Reload
Alles klar, danke. Ich muss teilweise reine Infofächer belegen und habe aus bestimmten Gründen eines genommen, in dem dieses Semester allerdings keine Vorlesung angeboten wird. Sprich, ich kämpfe mich die ganze Zeit alleine durch den Scheiß. :ugly:

Es geht um folgende Aufgabe. Habe dazu leider keine Lösung:

Ich habe so gut wie absolut keinen blassen Schimmer wie ich da genau vorgehen soll. Ich versuche mich zwar in die Thematik einzulesen, aber so wirklich dahinter gekommen bin ich nicht.


Meine Gedanken:
Also die Vorbedingung wäre doch so was wie: L1[x] <= L1[x+1] ∧ L2[x] <= L2[x+1] (sprich, die Listen sind aufsteigend sortiert)
Und die Nachbedingung: L = L1 + L2 ∧ L[x] <= L[x+1] (die Liste besteht aus den Elementen der Listen l1 und l2 und ist aufsteigend) Kann ich das so überhaupt darstellen? Also L = L1 + L2? Vermutlich nicht, oder?

Kann man jetzt einfach die Nachbedingung als Invariante nehmen? Und wie gehe ich bei dem Korrektheisbeweis genau vor? Könntest du die Aufgabe irgendwie lösen?

Wie gesagt: Ich habe keine wirkliche Ahnung und mache das nur aus dem Gefühl heraus.
 

crack-king

Administrator
Team-Mitglied
systems, systems, systems, systems, systems, systems
Hmn..Gute Frage..Korrektheitsbeweise sind so eine Sache. Invarianten haben wir immer nur dazu eingesetzt, um die Korrektheit einer Schleife zu zeigen. Bei uns war das so definiert, dass die Invariante einer Schleife zu jedem Zeitpunkt erfüllt sein muss. Das wäre bei dir dann ja nicht der Fall, weil L = L1 + L2 (denke das kann man so nicht sagen, eher irgendwie den Schnitt oder die Veroderung nutzen.) nicht immer erfüllt ist. Jetzt müsste man überlegen, was eine passende Invariante wäre

---------- Beitrag um 14:35 Uhr hinzugefügt ---------- Vorheriger Beitrag um 14:31 Uhr ----------

Ich denke eher es wird auf sowas hinauslaufen, wie L[1..n] ist sortiert

---------- Beitrag um 14:45 Uhr hinzugefügt ---------- Vorheriger Beitrag um 14:35 Uhr ----------

Hab gerade mal geguckt: Korrektheitsbeweise waren bei uns so definiert:"Ein Korrektheitsbeweis vollzieht das Programm Schritt für Schritt nach". Das war simpler, aber wer weiß, wie das bei euch verlangt ist.

Also auch wenns bei mir jetzt drei Jahre her ist..Ich würde das wohl so aufziehen

Die Schleife ist hier die Rekursion, die kann ja nur n = len(L1) + len(L2) mal aufgerufen werden. Und wenn man die Rekursion als Schleife aufzieht, hat man irgendwie nen Laufindex j aus n. (warum gibts hier eigentlich kein Latex-Plugin? :D )

Und zu Beginn des j-ten Schleifendurchlaufs ist die Liste L[0...j-1] sortiert. Und dann sollte sich das mittels Induktion lösen lassen.

Also I.A.: j=1

Und dann IS: j -> j+1

Da würde ich jetzt einfach erklären, warum der Code definitiv zum Ergebnis führt.

Aber ich gebe keine Garantie^^
 
Zuletzt editiert:
Spielt gerade: Persona 3 Reload
Hmm, okay. Erstmal danke für die Antwort. Wie schreibt man das mathe- bzw. infotechnisch in diesem Kontext genau hin, dass die Liste sortiert sein soll? So wie ich das anfangs dargestellt habe? Mit Element x der Liste ist kleiner gleich Element x+1. Oder gibt es da eine bessere Methode?

Also ist deine Invariante einfach, dass die Ergebnisliste sortiert ist? Und du schaust nur auf die Rekursion, die du hier als Schleife betrachtest? Das heißt, du willst einfach, dass vor bzw nach jedem Schleifendurchlauf die Invariante erfüllt wird. Aber müsste man für die If-Bedingungen in der Funktion selbst nicht auch eigene Invariaten definieren? Oder nimmt man da auch einfach die von der Rekursion? WTF? Irgendwie verwirrt mich das. :D Habe mich die ganze Zeit ziemlich auf die If-Schleifen konzentriert und habe die Rekursion erst einmal hinten angestellt, weil das nirgendwo in den Vorlesungsfolien erwähnt wurde. :/
 

crack-king

Administrator
Team-Mitglied
systems, systems, systems, systems, systems, systems
Also wenn ich eins während meines Studiums gelernt habe, dann das es nicht DIE Schreibweise gibt :ugly:

Also ich hätte dann wirklich "L[0...j-1] ist sortiert" geschrieben. Das mit dem <= dürfte auch gehen, ob das für den Beweis dann schwerer/einfacher ist, weiß ich nicht.

Genau, meine Invariante sagt, dass vor jedem Schleifendurchlauf i die Liste bis i-1 sortiert ist. So werden Invarianten normalerweise auch definiert, da deren Zustand vor und nach jedem Schleifendurchlauf gültig sein muss. Für die IF-Bedingung macht das imo keinen Sinn.

Also ich sage es dir mal so, wie wir es damals immer gemacht haben. Wir haben eine Schleife und für diese bestimmen wir eine Invariante. Die Invariante muss vor dem Schleifendurchlauf und nach dem Schleifendurchlauf gültig sein. Jetzt hast du hier keine Schleife (Eine IF-Bedingung ist KEINE Schleife! ), sondern eine Rekursion. Wenn man das jetzt mal ganz grob betrachtet, ist es auch nur eine Schleife, die über die Elemente der Listen iteriert. Und da die Bedingung vor und nach der Schleife (Rekursion) gelten muss, scheiße ich erstmal auf die If-Bedingungen, da das auch nur simple Anweisungen sind.
 
systems, systems, systems, systems, systems, systems, systems, systems, systems
Hallo Freunde,

hat jemand von euch ein SSL-Zertifikat für seinen Server? Wenn ja, wo habt ihr das her? Ich gucke aktuell ein bisschen weil ich bei mir (unter anderem) die Service Worker zum laufen bekommen möchte, aber ich bin mir bei den Anbietern noch nicht ganz sicher.

Auf der einen Seite gibt es startssl die kostenlose Zertifikate anbieten, jedoch beim zurücknehmen Geld verlangen (und die Zertifikate ansich sollen jetzt auch nicht so der shit sein). Und dann habe ich noch ssls gefunden, was zwar etwas kostet aber auf dem ersten Blick ganz gut aussieht.

Habt ihr vielleicht noch Vorschläge oder Tipps?
 
systems, systems, systems, systems, systems, systems, systems, systems, systems
Hm, soweit ich das jetzt gelesen habe würde dann weiterhin bei jedem User eine "nicht vertrauenswürdige Seite" Nachricht kommen wenn man selber ein Zertifikat erstellt. Also das man das noch bestätigen muss.

Zumindest lese ich das aus

Neben dem Nachteil, dass die eigene CA vor Benutzung zuerst auf den Clientrechnern bekannt gemacht werden muss[...]
heraus.

Oder irre ich mich jetzt dabei?
 
systems, systems, systems, systems, systems, systems, systems, systems, systems
Gut, dann ist die Option schon mal raus :D

Was haltet ihr den von ssls.com?

Ich überlege da ob ich entweder das PositiveSSL Wildcard von Comodo oder das RapidSSL Wildcard von GeoTrust nehme. Comodo sagt mir immerhin was. Hat einer von euch eine Meinung dazu?
 
Hallo Zusammen!

Ich habe da mal eine Frage: Wie ist der HTML Code für eine automatische Weiterleitung auf eine andere Unterseite auf meiner Website oder auf eine allgemeine andere Seite? Weiß das zufällig jemand? Habe mir eine eigene Seite kreiert und mich soeben auch mit dem E Mail-Adresse einrichten auf hosting.1und1.de/eigene-email-adresse beschäftigt, um auch eine Möglichkeit zum Kontaktieren zu bieten. Das Ganze soll dann später noch mit einem Shop verknüpft werden...Wäre dankbar, wenn mir da jemand weiterhelfen könnte!
 
Top