Programmieren: Für wen oder für was? Hardwarespezifik

M

McMoneysack91

Gast
Liebe Freunde,

derzeit beherrsche ich an Programmiersprachen "nur"

HTML - Grundkenntnisse
CSS - Grundkenntnisse
PHP - GANZ oberflächliche Grundkenntnisse

Mit diesem kleinen Basic-Toolkit arbeite ich an einer Website, in der ich möglichst viele unterschiedliche Elemente - auch zu Trainingszwecken - einbaue (Buttons, Weiterleitungen, Verlinkungen, Aufklappmenüs, etc.). Mir gefällt, dass ich losgelöst von einengenden Baukästen eine Seite ganz nach meinem Geschmack bauen kann. Zudem ist sie durch den Minimalismus sehr "snappy", also sehr ressourcenschonend und schnell in der Reaktion. Das zur Vorgeschichte meiner "Kenntnisse".

=======

Hier im Forum sprach ich mal die Fülle an unterschiedlichen Hardware-Architekturen und OS-Spezifiken auf (Dinge werden für Windows geschrieben, funktionieren nicht unter Linux z.B. etc.). Ein Nutzer führte auf, dass Browser als ausführende Plattform ohnehin in Zukunft deutlich an Gewicht erhalten würden. Dies werde vermutlich Cross-Platform-Compatibility schaffen.

Mir sind Ansichten von Softwareentwicklern (auch mit jahrzehntelanger Erfahrung in unterschiedlichen Firmen im Silicon Valley) bekannt, die die Ansicht vertreten, ein Browser vereine viele Plattformen und Hardware. Was wäre es für eine Zeitverschwendung nur für eine bestimmte Architektur oder OS zu schreiben.

Ist diese Auffassung begründet, oder ist das ein wenig zu weit gegriffen?

=======

Als Laie stelle ich mir Source Code und fertiges Programm vor wie bei der Video. Ich habe Rohmaterial, ein Programm, in dem ich das alles bearbeite und am Ende steht in diesem Programm ein Strang aus Videodateien, Effekten, Filtern etc. Jetzt kann ich dieses Rohmaterial rendern.

Das Rendering kann ich ja gestalten wie ich mag für was ich mag. NTSC, PAL, Ganzbilder, Interlacing, als .avi .mp4 .mpeg .mov oder oder oder. Ich muss ja dafür nicht das Video neu drehen oder bearbeiten. Ist das bei Software nicht in etwa ähnlich?

Was macht ein Browser so besonderes, dass er angeblich plattformübergreifend Einheit schafft?
 
Das Stichwort, mit dem du dich beschäftigen solltest, heißt "Progressive Web App".

Im Grunde sind das Webseiten, die mit HTML/CSS gestaltet werden, und durch Javascript eine lokale Logik erhalten und somit auch Offline funktionieren könnten.
Um Daten zu speichern, können diese "PWAs" eine lokale Datenbank nutzen.
Du kannst diese PWAs als Verknüpfung auf den Home-Bildschirm des Android/iOS-Geräts packen und verhalten sich wie lokale Apps - ohne, dass du Plattformspezifisch etwas kompilieren und über einen App-Store gehen musst.

Btw. weder HTML, CSS noch PHP sind "Programmiersprachen", das sind bestenfalls Scriptsprachen.

Lern Javascript, damit kommst du am weitesten.

Wenn es mehr sein soll, schau die REACT, VUE etc an.
 
  • Gefällt mir
Reaktionen: McMoneysack91 und PHuV
McMoneysack91 schrieb:
Mir sind Ansichten von Softwareentwicklern (auch mit jahrzehntelanger Erfahrung in unterschiedlichen Firmen im Silicon Valley) bekannt, die die Ansicht vertreten, ein Browser vereine viele Plattformen und Hardware. Was wäre es für eine Zeitverschwendung nur für eine bestimmte Architektur oder OS zu schreiben.
Anwendungen in den Browser zu verfrachten macht nur Sinn, wenn diese nicht auf Performance angewiesen sind.
McMoneysack91 schrieb:
Was macht ein Browser so besonderes, dass er angeblich plattformübergreifend Einheit schafft?
Browser laufen (meist) unter allen Betriebssystemen und schaffen darin eine Umgebung, die sich zwischen Betriebssystemen nicht unterscheidet. Webanwenungen interessieren sich also nur dafür, ob der Browser seine Funktionen unterstützt. Das Betriebssystem auf dem der Browser ausgefürt wird ist hierbei egal.

Diese Abstraktionsschicht erlaubt es, eine Webanwendung nahezu ohne Anpassungen auf allen Betriebssystemen auszuführen. Gleichzeitig ist der Zugriff auf die Hardware durch diese Abstraktion sehr eingeschränkt, was hardwarenahes Programmieren limitiert. So was wie DAWs, 3D-Software wie Maya oder Blender und Videoschnitt sind Anwendungen, die du eher nicht im Browser haben willst.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Skysnake, Xes, SoDaTierchen und 2 andere
Ich kann da immer wieder nur Flutter empfehlen. Du hast eine Code-Basis und kannst damit auf nahezu allen Systemen deployen. Ob als App für Android und iOS oder als Desktop-Anwendung für Windows, Linux, MacOS oder als Web-App.
 
  • Gefällt mir
Reaktionen: Madman1209
Den Terminusunterschied Script oder Programmiersprache kannte ich noch nicht. In einem Forenpost stellte jemand ein Plakat mit einem Flussdiagramm "which programming language to learn", wo alle Sprachen scherzhaft wie Herr der Ringe Charaktere kurz umrissen wurden. PHP war eine von ihnen, daher schmiss ich das alles jetzt mal in einen Topf :D
 
McMoneysack91 schrieb:
derzeit beherrsche ich an Programmiersprachen "nur"
HTML - Grundkenntnisse
CSS - Grundkenntnisse
HTML und CSS sind Auszeichnungsprachen.
 
  • Gefällt mir
Reaktionen: Skysnake, TorenAltair, [ChAoZ] und 5 andere
Für UI Anwendungen kann man den Browser tatsächlich fast als eigenes OS betrachten und wie erwähnt sind PWAs eine Option Platform unabhängig zu entwickeln.
Der Browser nimmt dir dann die Arbeit ab den Code für die Plattform anzupassen

Es gibt aber noch mehr als nur UI Anwendungen 🙂
Ich schreibe oft Code für MCUs (esp32...) um Sensoren auszulesen oder Relais zu steuern da gibt es schon mal keinen Browser. C++ und Python sind da die am meisten verwendeten Programmierersprachen.

Eine Datenbank wird auch nicht wirklich als Browser App Sinn machen. Die UI zur Verwaltung möglicherweise aber nicht die Engine.
 
McMoneysack91 schrieb:
Was macht ein Browser so besonderes, dass er angeblich plattformübergreifend Einheit schafft?
Weil ein Browser auf jeder Plattform (fast - die kleinen Unterschiede zwischen Chrome, Firefox und Safari mal außenvorgelassen) identisch funktioniert.

Wenn man Code auf unterschiedlichen Betriebssystemen ausführen will, hat man das Problem, dass jedes Betriebssystem anders tickt, andere Funktionen anbietet, etc.
Dasselbe trifft auch auf Hardwarearchitekturen zu: Kompilierten Assembler Code für x86 kann man nicht auf ARM Systemen ausführen.
Da hat man also schon mindestens zwei Ebenen, die man irgendwie vereinen müsste, um Code schreiben zu können, der auf allen Systemen läuft.

Ein Browser hingegen liegt noch eine Schicht darüber. Hardwarearchitektur und Betriebssystem sind wegabstrahiert. Es gibt nur noch JavaScript und den DOM. Und dank der W3C Standards verhält sich HTML, CSS und JavaScript in jedem Browser (fast - s.o.) gleich, komplett unabhängig von Hardware und Betriebssystem.

Was ähnliches lässt sich auch z.B. mit Java erreichen. Hier hat man die JVM, die das alles wegabstrahiert, sodass man auf jeder Plattform denselben Code ausführen kann.
Es ist aber auch in C++ möglich, wenn man sich Frameworks wie Qt anschaut. Wobei man hier dann aber nicht ein kompiliertes Produkt erhält, das überall läuft, sondern seinen Source Code (oft, nicht immer) ohne Anpassungen für mehrere Plattformen kompilieren kann.

Am Ende geht man aber natürlich immer einen Kompromiss ein: Plattformunabhängigkeit bedeutet dass man sich abhängig von einer Programmiersprache / Framework / VM macht.
 
Browserbasierte Anwendungen haben auf jeden Fall ihre Daseinsberechtigung, werden an vielen Stellen eingesetzt und es wird sicherlich auch immer mehr werden. Plattformunabhängigkeit ist dabei nur ein Vorteil, die Wartbarkeit ein weiterer. Da es nur eine zentrale Instanz der Anwendung gibt, gestalten sich Updates einfacher. Statt 5, 50, 500 oder noch mehr Clients zu aktualisieren - ein automatisches Update-System implementiert sich ja auch nicht von allein - fährt man den Server kurz runter, spielt das Update ein, fährt den Server wieder hoch und alle Clients müssen lediglich einmal F5 drücken.

Derzeit programmiere ich beispielsweise für unser Service-Team eine kleine Anwendung, in der Service-Einsätze verwaltet werden sollen, nix großes, so gesehen nur ein FrontEnd für eine kleine SQL-Datenbank. Kauf-Software kam nicht in Frage, weil ein paar spezielle Funktionen benötigt werden, die es in Kauf-Software so nicht geben wird (zB mehrere Statusreports als PDF) und ich auftragstechnisch gerade sowieso etwas Luft hatte. Dazu habe ich eine ASP.NET MVC Anwendung geschrieben. Das ist effektiv eine C#-Anwendung, die statt einer herkömmlichen GUI mit WinForms oder WPF html-Seiten generiert. Die sogenannten cshtml-Seiten enthalten dabei neben klassischem html-Code auch razor code, der zB auch Schleifen bietet, um aus einem Array eine html-Tabelle zu machen oder dergleichen. Letztendlich bekommt der Client-Browser davon aber nichts mit, weil er nur die fertig generierte html-Seite zu Gesicht bekommt.

Sicherlich haben solche Anwendungen aber Grenzen. Pauschal würde ich behaupten, dass jede Anwendung, deren GUI nur aus banalen Textfeldern und einer Handvoll Buttons als Benutzerschnittstelle besteht, auch als Webanwendung ausgeführt werden kann. Ob es sinnvoll ist, dies zu tun, hängt natürlich vom Anwendungsfall ab. Sobald es grafisch aufwändiger wird oder tatsächlich auch lokal auf dem Client etwas passieren soll - zB Hardwareschnittstellen - wird es problematisch.
 
  • Gefällt mir
Reaktionen: ghecko
McMoneysack91 schrieb:
Den Terminusunterschied Script oder Programmiersprache kannte ich noch nicht.
Der spielt auch keine Rolle, ist eher umgangssprachlich und orientiert sich vornehmlich an dem gefühlten oder faktisch häufigsten Anwendungsfall. Bash (und seine üblichen Alternativen) und PowerShell (oder wie auch immer die Sprache dahinter heißt) sind welche, die man denen zuordnen würde. Aber selbstredend ist jede Skriptsprache auch eine Programmiersprache.
Javascript ist entsprechend eine ganz normale Programmiersprache, die nur den Namen gemein hat mit der völlig anderen Programmiersprache Java. :D
 
McMoneysack91 schrieb:
PHP war eine von ihnen, daher schmiss ich das alles jetzt mal in einen Topf
Das ist auch irrelevant. Scriptsprachen werden sie genannt, weil sie vorrangig interpretiert werden/wurden, weswegen sie trotzdem Programmiersprachen sind. Scriptsprachen sind eine Untermenge von Programmiersprachen. Das ist heutzutage aber teilweise falsch, denn auch C# und .Net wären somit "Scriptsprachen", denn diese kompilieren (oft) nicht zur Zielplattform, sondern werden in eine Intermediate Language überführt (IL aka Bytecode), die dann von einer Runtime VM interpretiert (und ggf. vorkompiliert) wird. Bei .Net ist das bspw. die CLR (Common Language Runtime), bei Java gibts die JRE (Java Runtime Environment), welche durch mehrere Implementierungen abgedeckt ist - bspw. Oracle JDK, OpenJDK, Amazon Coretto, Azul Zulu, Bellsoft Liberica, Eclipse Temurin, SAP SapMachine. Durch die Runtime ist bspw. auch JIT möglich, was in fertig kompilierten Sprachen unmöglich ist.

Bash wäre bspw. eine klassische Scriptsprache, PHP erzeugt Opcodes und diese IL wird dann in ihrer VM ausgeführt, "genauso" wie bei C# und Java auch. PHP kann man aber auch mittels PeachPie (in .NET) kompilieren. Python wäre auch eine "Scriptsprache", mit CPython können diese aber ebenso (in Bytecode) kompiliert werden - ergo auch keine "Scriptsprache" im klassischen Sinne. Der Begriff "Scriptsprache" ist daher heutzutage eigentlich vollkommen überflüssig, weil die Grenzen immer weiter verschwommen sind.

"Demnächst" steht WASM an - das ist auch nur einzig und allein eine IL. Der Definition nach, wären nun alle Programmiersprachen, die in WASM kompilieren können, Scriptsprachen.

Wie bereits angedeutet wurde sind HTML und CSS Markup. Darüber definierst du etwas. Wie das dann umgesetzt wird, steht auf nem ganz anderen Blatt. Dass etwas keine Programmiersprachen ist erkennst du leicht u.a. daran, dass es keine Abfragen, Schleifen und Datenstrukturen gibt, eben das, was eine Programmiersprache "auszeichnet" - Algorithmen.
https://en.wikipedia.org/wiki/Programming_language schrieb:
A programming language is a formal language comprising a set of strings that produce various kinds of machine code output. Programming languages are one kind of computer language, and are used in computer programming to implement algorithms.
In HTML kannst du bspw. keine Zahlen addieren.
https://en.wikipedia.org/wiki/Markup_language schrieb:
In computer text processing, a markup language is metadata for annotating a document (i.e. webpage), which is visually distinguishable from how the user typically sees the document.[1] It is used only for formatting the text, thus when the document is rendered for display, the markup language doesn't appear.[2]

FYI: Die Trennung "Scriptsprache" und "Programmiersprache" wurde "früher" gern genutzt, um die eigene "Überlegenheit" darzustellen, wenn man statt PHP halt Java gemacht hat. Ist halt nur blöd, wenn selbst riesige Firmen jegliche Sprachen verwenden. Eigentlich legt es nur die eigene Inkompetenz dar, aber nun gut... Und spätestens seitdem "JS die Welt erobert hat", ist das "Argument" gleich dreimal hinfällig.
 
  • Gefällt mir
Reaktionen: Web-Schecki und Raijin
Lern die Basis kennen.
HTML und CSS ist schon mal eine gute Voraussetzungen.

Lern SASS/LESS kennen, Moderne Technologien rund um CSS.
Wenn du dich auf WebApps spezialisierst, dann wirst du um Node nicht herumkommen.... lerne Node kennen, lerne React, gerne auch als fertiges Framework wie Nextjs.

Lern also Ecmascript, TypeScript usw. dazu SASS/LESS,
Mit dieser Basis kannst du moderne Apps erstellen.

Dazu kommt die Infrastruktur.... mach das alles unter Unix Systemen, einfach weil die wenigsten Windows Server betreiben. Unter Unix findest du schneller Hilfe von anderen Devs als unter Windows.

Ich persönlich bin grad selbst am React lernen (NextJS + NestJS) indem ich ein eigenes Projekt entwickle. Auch für mich ist es neu, da ich zum ersten Mal alles selbst konfiguriere und betreibe. Lernkurve ist steil... man lernt viel dazu aber gleichzeitig nimmt die Motivation ab. Dran bleiben....
 
Yuuri schrieb:
Wie bereits angedeutet wurde sind HTML und CSS Markup. Darüber definierst du etwas. Wie das dann umgesetzt wird, steht auf nem ganz anderen Blatt. Dass etwas keine Programmiersprachen ist erkennst du leicht u.a. daran, dass es keine Abfragen, Schleifen und Datenstrukturen gibt, eben das, was eine Programmiersprache "auszeichnet" - Algorithmen.
Es ist halt die Frage, ob Programmiersprachen das wirklich haben müssen. Was so ne gängige Definition ist ab wann etwas eine Programmiersprache ist, ist die sogenannte Turing-Vollständigkeit (was Du ja schön mit "man hat schleifen, man hat Abfragen" usw. umschreibst). Das geht zurück auf Alan Turings Turing-Maschine. Ein abstrakter Computer mit einem recht minimalen Set an Möglichkeiten aber eben genug, um alle gängigen Algorithmen berechnen zu können. Wenn man mit einer Programmiersprache alle Algorithmen implementieren kann die auf der Turing-Maschine möglich sind, dann ist diese Turing-Vollständig, ums jetzt mal ganz einfach zu formulieren.

Es gibt aber auch Programmiersprachen die sind bewusst nicht turing-vollständig wie z.B. Crema. Hintergrund ist der, das Turing-Vollständigkeit auch ihre Probleme mit sich bringt was Bugs/Sicherheitslücken angeht. Und für viele Dinge ist aber Turing-Vollständigkeit gar nicht nötig. Crema ist sozusagen der Versuch bestimmte Dinge (Schleifen!) wegzulassen aber trotzdem Programmierung zu ermöglichen.

Wenn man anerkennt, das Crema eine Programmiersprache ist, dann wirds natürlich mit dieser Definition von Programmiersprachen schwierig. Und dann lässt sich auch nicht mehr so ohne Weiteres darlegen, das sowas wie HTML eben keine ist. Denn HTML bringt halt auch viel mit was für eine Programmiersprache typisch ist. Da gibts Befehle (Tags) die von einem Interpreter (dem Browser) umgesetzt werden.
 
  • Gefällt mir
Reaktionen: BAGZZlash
Yuuri schrieb:
diese IL wird dann in ihrer VM ausgeführt, "genauso" wie bei C# und Java auch.
Nicht zu vergessen, dass man mit Java und GraalVM auch Native Images erzeugen kann. Dann gibt's keinen ByteCode mehr. Oder so ein Zwischenweg mit AoT, wo nur bestimmte Teile vorkompiliert werden und der Rest weiterhin als ByteCode ausgeführt wird.

Generell kann man spätestens seit der LLVM alle möglichen Sprachen zu nativem Code verarbeiten lassen. Also gibt's eigentlich gar keine Skriptsprachen mehr :D
 
andy_m4 schrieb:
Und dann lässt sich auch nicht mehr so ohne Weiteres darlegen, das sowas wie HTML eben keine ist. Denn HTML bringt halt auch viel mit was für eine Programmiersprache typisch ist. Da gibts Befehle (Tags) die von einem Interpreter (dem Browser) umgesetzt werden.
Das sehe ich anders. Die Turing-Vollständigkeit definiert eine gewisse Eigenschaft, die ein formales System, mit dem man etwas berechnen kann, haben kann. Programmiersprachen kann man im Allgemeinen als solche formalen Systeme ansehen, auch wenn sie nicht Turing-vollständig sind.
HTML ist in seiner Anwendung aber kein formales System, mit dem man etwas berechnen kann. Es werden schlicht keine Rechenvorschriften durch HTML beschrieben. Man könnte das zwar theoretisch tun, aber dann müsste man HTML ganz anders definieren.

Schleifen etc. sind natürlich vollkommen unerheblich - auch für die Turing-Vollständigkeit. Funktionale Programmiersprachen haben ja auch keine Schleifen.
 
Aus theoretischer Sicht ist das sicherlich diskutierbar, aus praktischer Sicht, im für die meisten normalen Alltag und in den meisten Kontexten ist HTML jedenfalls nicht als Programmiersprache zu betrachten. Ebenso CSS, auch wenn neuere Versionen Turing-Vollständig sind. Minesweeper ist auch Turing-Vollständig, aber ich bezeichne es dennoch als Spiel, nicht als Programmiersprache.

Den Einwand, dass Turing-Vollständigkeit weder hinreichend, noch notwendig ist für eine Programmiersprache halte ich jedoch für berechtigt. Der Einwand ist ja prinzipiell schon theoretischer Natur und darüber hinaus kann man vielleicht einfach mal banal, selbstbezüglich aber für hier im Thread hinreichend sagen, eine Programmiersprache ist etwas, das als Programmiersprache entworfen wurde und auch so verwendet wird von der Überwiegenden Mehrheit.

Es geht mMn beim Thema HTML/CSS weniger um technisch 100% korrekte oder philosophische Betrachtungen, sondern um ein Erlernen eines Konzeptes, indem man lernt was eben keine Programmiersprache ist im üblichen Sinne um dadurch eben mehr über das Programmieren zu erlernen. Also sich den Unterschied zwischen HTML und Programmiersprachen klar zu machen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Madman1209
Web-Schecki schrieb:
HTML ist in seiner Anwendung aber kein formales System, mit dem man etwas berechnen kann. Es werden schlicht keine Rechenvorschriften durch HTML beschrieben.
Eine Turing-Maschine ist quasi die Definition von Berechnung. Wenn Du also davon redest, das eine Sprache etwas berechnen können muss damit sie als Programmiersprache zählt, musst Du definieren was denn "berechnen können" bedeutet, wenn Du als Definition dafür nicht die Turingmaschine heranziehst.

Web-Schecki schrieb:
Schleifen etc. sind natürlich vollkommen unerheblich - auch für die Turing-Vollständigkeit. Funktionale Programmiersprachen haben ja auch keine Schleifen.
Funktionale Programmiersprachen haben auch Schleifen. Das sie dort mit Hilfe der Rekursion gemacht werden ändert nix an der Charakteristik und das es letztlich nix anderes als Schleifen sind.
 
andy_m4 schrieb:
Eine Turing-Maschine ist quasi die Definition von Berechnung. Wenn Du also davon redest, das eine Sprache etwas berechnen können muss damit sie als Programmiersprache zählt, musst Du definieren was denn "berechnen können" bedeutet, wenn Du als Definition dafür nicht die Turingmaschine heranziehst.
Eine Turing-Maschine ist ein Berechnungsmodell. Davon gibt es viele, auch gleichmächtige. Eine Programmiersprache impliziert zumindest ein solches Berechnungsmodell, oder beschreibt es sogar ziemlich direkt (bei einigen funktionalen Programmiersprachen den Lambda-Kalkül z.B.).
Bei HTML ist das hingegen unbestreitbar nicht der Fall. Du kannst kein Berechnungsmodell nur aus der Sprache HTML ableiten. Also kannst du mit HTML auch nichts berechnen.

Dass man den Browser dazu mittels HTML missbrauchen kann, ist eine vollkommen andere Geschichte und hat mit der Sprache HTML nichts zutun.

andy_m4 schrieb:
Funktionale Programmiersprachen haben auch Schleifen. Das sie dort mit Hilfe der Rekursion gemacht werden ändert nix an der Charakteristik und das es letztlich nix anderes als Schleifen sind.
Nein, das ist schlicht falsch. Schleifen sind Kontrollstrukturen, die es in funktionalen Programmiersprachen und den zugrundeliegenden Kalkülen in der Regel nicht gibt. Dass Schleifen keine zusätzliche Mächtigkeit haben, ist unabhängig davon klar.
 
  • Gefällt mir
Reaktionen: BeBur und Madman1209
Web-Schecki schrieb:
Nein, das ist schlicht falsch. Schleifen sind Kontrollstrukturen, die es in funktionalen Programmiersprachen und den zugrundeliegenden Kalkülen in der Regel nicht gibt. Dass Schleifen keine zusätzliche Mächtigkeit haben, ist unabhängig davon klar.
Als Zusatz: Grundsätzlich gibt es drei "große" Ansätze für solche "Berechnungsmodelle". Das eine sind Turing-Maschinen, das ist am bekanntesten und ist sehr nah daran, wie meist programmiert wird und ist im prinzip imperatives programmieren. Das zweite ist das Lambda-Kalkül aus dem sich der Ansatz funktionaler Programmierung ableitet. Das dritte sind μ-Rekursive Funktionen, die kein eigenes Paradigma bei Programmiersprachen haben und eben im Prinzip einfach rekursive Funktionen beim Programmieren inspiriert hat.

Die sind wie Web-Schecki schon schrieb alle gleichmächtig, d.h. sie können alle das gleiche berechnen. Es gibt aber natürlich auch schwächere Berechnungsmodelle, die nicht alles berechnen können, aber dafür andere wünschenswerte Eigenschaften haben und z.B. nicht dem berühmten Halteproblem unterworfen sind, d.h. du kannst bei diesen für jedes Programm beweisen, dass das Programm für jede Eingabe terminiert aka anhält.

TL;DR: Wie man hier schon schrieb, es gibt auch Programmierung jenseits von Turing-Vollständigkeit.
 
  • Gefällt mir
Reaktionen: andy_m4
Web-Schecki schrieb:
Bei HTML ist das hingegen unbestreitbar nicht der Fall. Du kannst kein Berechnungsmodell nur aus der Sprache HTML ableiten. Also kannst du mit HTML auch nichts berechnen.
Definiere doch mal, was "berechnen" ist. Solange Du das nicht tust ist die Diskussion für die Katz.

Ich behaupte übrigens nicht, das HTML eine Programmiersprache ist. Ich sag nur, das es mit den hier genannten Definitionen von Programmiersprache schwierig ist das zu rechtfertigen.

Web-Schecki schrieb:
Nein, das ist schlicht falsch. Schleifen sind Kontrollstrukturen, die es in funktionalen Programmiersprachen und den zugrundeliegenden Kalkülen in der Regel nicht gibt.
Schleifen und Rekursion sind von der Mächtigkeit äquivalent. Du kannst jede Schleife als Rekursion darstellen und umgekehrt.
 
Zurück
Oben