Notable: A friend told me, that his father hid little pieces of paper before going to work.
When he was young, he took thos hidden papers and 'copied' the letters at the keyboard, which created in the television a picture. Then with the next line an whole video.
Thanks to you for helping me out during coding. :)
(Similiar to Loci -Method for recognizing memory details in the spatial room.)
Nature of Code
"Why would you want more than machine language?" - John von Neumann -
"I have had the pleasure today in looking at the wing of a dead crow and I still think that I shall manage to fly and I have thought of three different ways of flying that all strike me as likely to answer."
-- Ada Lovelace (age 13) Wednesday, 9 April 1828 (forwarded by Grade Booch)
Das wird vielleicht einige Leser verärgern, aber ich spreche mich gegen den Namen "Informatik" aus. (Ich schätze aber sehr die Zeit und Arbeit von allen. Es vereinfacht vieles.)
Unter Informationen lässt sich nichts ordentliches vorstellen, anstelle "Computer Science" eine logische Konsequenz aus der Elektrotechnik ist. Man arbeitet mit Computern in der "Wissenschaft".
Demnach berührt Computer Science alle Fachbereiche.
Es sei anzumerken, dass manche Computer Scientist, wie einige "Data Scientists" nichts von Strömen oder Elektrischen Schaltungen verstehen. Genauso wenig von mechanischen Computern, wie Sie im 18 Jh. von Webstühlen zu Babbage, zu Vannevar Bush (Differential Engine) und folgend in elektrische Computer, wie Zuse (1943) übergingen. Exakt in dieser Reihenfolge. Die meisten Namensvetter in den Gleichungen hatten meistens einen Abschluss in der Elektrotechnik. (Siehe Bell Labs oder Liste)
Man stelle sich einen Abakus vor und nichts anderes ist der Computer.
Man rechnet mit einem Computer und kann mit den Bits (im Abakus die Steine) die Anzahl festlegen.
Ein bewegtes Bild wird emuliert, da man die Bilder, wie ein Daumenkino abspielt. (Jedes Bild wird umgeblättert). Gleichzeitig können anstelle des Bildes auch einzelne Bildpunkte (Pixel) geändert werden (bearbeitet).
Sofern man "Neumann" als Urheber sehe, kann man einen Computer auch als Buchhaltung interpretieren.
Daraus werden unter anderen 'Excel' Programme oder aufwendige Prozessschritte 'programmiert'.
Es geht der Spruch herum, dass 70% aller Gewinne von IBM (1945-1970), Neumann zu verdanken waren. (Gleichzeitig demnach die Kultur..). Hier ist der Übergang von Assembler zu Fortran ein wichtiger Meilenstein, die u.a. die ersten Satelliten oder Großrechnern den Zeitaufwand abnahmen -> Hochsprache, um die Anzahl die Codezeilen über Wörter zu reduzieren. (Scientifique Computation auf IBM, die bis heute mit Fortran 2022 der Grundpfeiler für jede Hochsprache sind.)
Erst nach den 70ern etablierte sich Microsoft und Apple mit Ihren Homecomputern oder Betriebssystemen. In der Zeit wurde in Deutschland die erste Fakultät für Informatik gegründet.
(Die DDR nutzte geclonte IBM Rechner)
Parallel wurden dann die Hochsprache (C, orig. Bell Labs) entwickelt und folgend Objektorientierte Sprachen (C++) bzw. Java, als Sichere Programmiersprache (aber langsamere für Webanwendungen), bis Übersichten und Softwaretechniken (UML über Gradybooch IBM) folgten.
Ein Informatiker kann mit 'Optimierung' also nichts elektrisches 'Optimieren', wie erneurbare Energien oder physischen Schaltungen designen, noch deployen. Aber helfen. (Besserer Algorithmus aus der Mathematischen Sprache in die Maschinensprache & Alltagssprache zu übersetzen). Sie sind für mich nur Übersetzer oder Mathematiker, wobei eine Lehrkraft, sehr sehr viel Geduld mit mir haben musste.
Nach meinen gesamten Versuchen, Informatik zu verstehen, war ich einfach faul gewesen & wollte direkt zur Lösung nachschlagen.
Im Kopf ist nicht in der Hand, genauso wie
Nicht richtig im Kopf ist, Nicht richtig in der Hand.
> Nur, weil ein ChatBot den Code ergänzt, bedeutet das nicht, dass man mit der 'Wechseltaste', jedes einzelne Wort ausgeschrieben hatte. Noten lesen bedeutet nicht ein Klavier beim Ersten Tag spielen zu können.
Erst das Denken, der logische Pfad & dann die motorische Bewegung bestärken das 'Codieren'.
> Helen Keller (blind&taub) lernte erst motorisch einzelne Begriffe, wie W-A-T-E-R und darüber erst das Sprechen durch das Ertasten der Vibration der Lippen. Sie war daraufhin eifrig jedes neue Wort zu ertasten. (> Handschrift zum Lernen). > Ihr müsst schreiben zum Lernen.
Notable: Her Interview about the gender gap between 1945-1960.
It was 50/50+- in 'Computer Science'. (unlike the Heise Online Comments)
Interview: Women in Technology: Frances Allen 04/16/2003
++ Article in NYT, - The ENIAC Woman (Programmiererinnen für Ballistische Raketensysteme, größtenteils Frauen, 1940er)
(Heute: IBM führt seit 30 Jahren die meisten Patentanmeldungen. Mit 2022 Samsung)
What do you do when you lose an H-Bomb or even a nuclear submarine in the middle of the ocean?
> Apply Search Algorithm
https://www.amazon.com/Help-Your-Kids-Computer-Science/dp/0241302293
Notable: If you don't 'include' a name, then he cannot take part in your text.
Similiar to including namespaces or library.
example: #include namespace std
Zeichen • -> Buchstabe-> Zahl -> Digramme/Trigramme (.. zwei, drei Zeichen) -> Silbe -> Wort (Subst, Verb, Adjective, Adverb, Konjunktionen + Präposition, Artikel, Object) -> Zeile -> Spalte -> Überschrift, Liste (Sätze), Dictionary, Blocktext/Absatz, Seite, Kapitel, Tabelle, Bild, Buch, Bücher, Schrank Zeile, Schrankindex, Schränke-> Gruppen von Schränke, Raum voller Schränke, Bereich in einem Raum, Gesamte Bibliothek ... (#include Library)
oder eine private Classe or public Classe.
Language is ordered Communication .. Also Programme müssen auch geordnet werden. 'Sorting' Lines ... 'Algorithms' (Zeichen können mit operator unbenannt (-'überladen'-) werden)
Notable: Zuse worked previously in a cheese factory. So he saw all these lines of cheese in the cheese factory to come up with his computer.
Memory is basically like ordering your room by 'stack of paper', or a mixed paper collection ('hash' = lat. chopped+ mixed together in etymology) in little groups (paper := * * * * marked) or (to put) in order the papers (etymology = array), that might have a tail (etymology = queue).
However, any of these papers might be on your shelf connected as a linked list. (Memory is basically the human written word.)
These can be all summarized in a template ('Datatype', french templat = weaver stretched out or extended) & finally in
a classe (etymology = assembly of people or group).
for the library.
> whatever they mean with 'data structure'. Organizing your 'room structure' is intuitively better.
After you have created a data structure, you can continue to store inside the classe a variable, which contains the adresse of your classe. Then link different Objects of this classe and you create a Graph. (Binary or not etc.)
Imagine you have a Lightbulb or LED. Now a row of LED. This would be your Christmas Light.
Code the Circuit: Now it increments the LED. Light up only the Even or Odd or Random Flash Numbers?
Make multiple rows of LED's and you get a picture. Now you can make the same thing in 2D. Hence a wave or with color a fire can be reimplemented.
You can emulate with a picture (Many LED in 2D) as well a whole Landscape, a Game, a Depth ?
A 3D Moving Screen by using the diagonals, as shadows (off/ Lesser color).
That is your computer screen, that depends on your code. It could be a letter or a love message.
(text, image, or video)
There are for example many way to put the LED [on/off} on a Raspberry Pi.
Simplified example. Either you write:
(A) led_pin.on()
(B) GPIO.output(led_pin, GPIO.HIGH)
While (A) has only "on" or "off", (empty brackets) you can specify or (B) which Pin, can turn "High" or "Low".
One as Boolean(on) , the other as Integer(Pin).
You can write your functions or classes with as many 'arguments', as you want to.
However maybe you like to specify 'How fast' it should blink as an argument as well? :)
Important to know:
If you get a task: Check out first in Github or elsewhere, if someone has already written a routine.
You don't have to invent the wheel from start. You can also use the internal registers and hardware functions (functions are implemented in combinatorics at I/O for example.) or you can choose any free pins and implement a software function. For example, I2C is possible via Hardware between two devices and you can use I2C software implemented between two other devices. Refered to as "Bitbanging".
For Raspberry PI or Arduino you can use the object orientated .on() and off(), While some devices require on-top SCPI. Thus you wrap these on() and off() in another class, which represents with other classes your first "API". Then you can transmit "Commands" of SCPI from your class, which are sent from the transmitter towards the receiver.
The receiver can then make if and else statements to do something when the string of Commands arrives. This technique is widely used from the 80ties until 2000 in many devices to enable standardized commands across different devices (Osci, Signal generator, power supplies, radar, etc.)
Generated Art DALLE - Viet Dang
Basically there are many different compilers and IDE's. This will determine your translated C Code into Assembly Code (Or the Hexcode/Binary Code).
Once you work with Embedded Systems, you likely have to transfer between two Chips via the I2C, SPI, UART, USB or other protocols. Keep in mind, that basically you are just switching a Tristate (Put first as Input for safety and then on Output). This will create a Rectangular Wave Transmission, that you can measure with your oscilloscope. Keep in mind, that the signal in your oscilloscope isn't just from the transmitted device, but also shows the voltage thresholds from your receiver/2nd chip. Follow the protocol, and you can reliably send/receive information across the channel. :)
There exist breakpoints for software and also for hardware. The software does help you correct formally your source code, while the hardware breakpoints allows you to slow down the clock module and enable step by step your circuit functions.
If your circuit doesn't have a pull up resistor, then you might not receive a signal. The same goes for reset pins.
Distinguish between Latch, Tristate and Port Registers. If you accidentely switch Latch and Tristate, then one goes pull up, while the other one pull down. Choose only one (TRIS) and your content will be at PORT. The longer your function, then longer it takes your processor, and the longer the time for this one bit. There are timing requirements, which you have to hold to reliably send between two devices signals.
Remark, how the Hardware Description Language like VHDL, Verilog (Licensed & Patented) are exactly on the lower half from the upperhalfed Software Section (C, C++, Python)
'The Literate Programming' - Donald E. Knuth (literate transl. in german: Literatur)
From Reddit (please give me a note of the original author)
Start Coding?
Nowadays Coders use tools like ChatGPT or Copilot. Use these tools to accelerate. However, learn the Basics before you progress. I learned Coding by writing it by pencil & pen, while typing it on Visual Studio Code.
> Ask ChatGPT to be your teacher. (Build the Hardware in Arduino and Print out a whole Code for Starters.)
> Buy a keyboard mattress with an english keyboard (UK or US). Reason: brackets are faster to type.
Reference Source Code for Good Object Orientation would be according to Grady Booch: 'Photoshop' and 'Mac Paint 1.0' (Source Code on GitHub of the first Release). Just to get a glimpse of a Bigger Software Project. The Apollo Guidance Computer in 1976 had alone more than a million Assembly Code lines, which can be shortened if you use higher-level programming with words. The Compilers were the main task of the researcher and engineers at the given time, which should represent effort and consistency. (Can be regarded f.e. in Youtube by Michael Steil, the Source Code in GitHub, or originally in the Computer History Museum. Ken Shirrif did parts of the Reverse Engineering Process to understand the encoded assembly code of the Guidance Module to the Moon.)
> You could also use instead of a disassembler, an assembler to convert the assembly lines to a C-Code. (Godbolt) (Note: There are different kinds of Assembly Code. F.e. for Intelx86, ARM Chips, RISCV Chips. Basically, each piece of the processor family has its own assembly language to allocate the memory + calculating/processing pipelines like their different room/infrastructure. This is important for creating reliable energy-efficient chips, that execute very fast. (f.e. fast robot arms, that aren't polluted with a lot of object-oriented libraries))
Ontop of the Processing-Chip and then the Programming Language, you put an Operating System. (addressable by your Terminal or CMD)
The reason is basically for more transparency, user rights (who is Admin, who is user) or security (Memory place is not accessible at all against Hackers).
'Embedded Systems' like Arduinos, Raspberry Pi's or RISCV (or special custom chips) run via your C/C++ or C# in your IDE, but usually, you download a file with their Compiler first.
The New M1 (Arm) by Apples Notebook cannot run programs, which installer is written for Mac64 (Intel based chip).
Also good to know: Sometimes you have to download an older version of a program (Matlab2007) to still let WindowsXP run. The newer Matlab Installer doesn't support obviously Windows XP. Old Chp boards or their software+hardware might only run on Windows XP, which could be painful. In short:
Processor Family + Prog. Language + Operating System + Programm (+ year) might lead to a program crash to your wonder. (If it doesn't run on Mac or Linux >Change to Windows.)
Advanced User, use a Virtual Machine (For example Mac M1, Property Program: 'Parallels'. Thus I can emulate Windows, Mac64,or Linux on the M1 Chip, run the program & then close the window.)
License Keys (number of users) for any of these above (There exists IP for Hardware Chip Blocks too and Software) might block your access as well. (for installation/ for usage)
'Access Denied'
(> Shortcut, if necessary. Use these two sources for a quicker overview.)
Ausführlichere Beschreibung ist in Bearbeitung in Github (privat)..
Meine Hinweise: (für Kinder Scratch als Einstieg oder Swift Sandbox von Apple.
Der Thread wird hier nutzerfreundlich für Hardware und Softwareleute geschrieben. )
Linux/ Unix unbedingt lernen. (für Fileaccess und schnelleres Navigieren.) ... Man kann "gefiltert mit ~ 5.000.000.000 pro Sekunde * 2 ^Anzahl der Transistoren suchen.
Das alleine bei einer 50Byte großen Datei. Als Mensch sollte man sein eigenes neuronales Netz nutzen und kombinatorisch filtern. (Besonders kreative Tabellen führen.)
Anhand der Kombinatorik kann man sich das gut erklären. Entweder "geordnet", dann ist das nur 1 Pfad oder ungeordnet (bsp. bei 3 Felder) 3!=6, also 6 Pfade. Bei 6 Felder, 720 etc.
Entlang des Pfades kann man sich das Ordnen nach Größen, Zellabschnitte oder Marktsequenzen ordnen, was 720 weniger in allen Reihenfolgen grundsätzlich ist.
Darin kann man "Dateisysteme" oder "Programme" in einer "Shell" -automatisiert schreiben. (Nur Liste mit deinen Anweisungen)
Python unbedingt für weiteres schnelles Skripte erstellen z.B. für Grafiken und Übersichten lernen. Also menschlicher Zeit. AI Bibliotheken.
erstes Erstellen einer Youtubeliste, Spotifyliste oder Linkliste, und diese in eine Datei einlesen lassen. Dann Filtern.
Hier ist ggf. für bereits versierte Studenten: Latex ratsam. U.a. kann dadurch die Bewerbungen oder math. Formeln niedergeschrieben werden.
Von Unix entstand dann Typescript. (Vorläufer der PDF) Im Anschluss erst Markdown und Latex. Die Herleitung ist wichtig, um "Schriften" und "Pixel" näher zu bringen.
Jede einzelne Schriftart musste per Hand von Kaligraphen eingelesen werden. U.a. war die Schachschrift in Magazinen die erste Wahl von Bell Labs, sowie Steve Jobs das Hauptaugenmerk auf Schriftarten gesetzt hatte gegenüber den andereren Hardware Developern. Besonders in Hinblick japanischer Spielekonsolen, versteht man aus dem Typescript heraus dann die Pixelgrafik aus den 70ern. Der Vorläufer bleibt aber die analoge Röhre aus Oszilloskopen (Tik Tak To aus den 50ern und Pong aus den 60ern)
C und C++ für Embedded Systems, Betriebssysteme, Browser oder Hochleistungsberechnungen (damals 20x bis 100x im Vgl. zu Python. "Golden Age of Computation". Man stellt hier die Überlegung an, ob es sich lohne, wesentlich mehr Codezeilen zu schreiben, oder in Python schneller das Programm zu vollenden. Nur ist der Arbeitskollege am Hochleistungsrechner genervt, wenn die eigene Kalkulation 3-5 Tage für die DNA Simulation länger dauert.
Die Apollo Maschinen sind relevant, die im Softwaremodullieren von Margaret Hamiltons Arbeiten kamen (1975).
VHDL und Verilog für den Entwurf von Schaltungen (80er)
Javascript, HTML und die Features für Frontend Development.
AssemblerLanguage (1950+)
Anwendung (1970er von Basic)
C Language by Ken Thomson (Bell labs), 1960ties)
C++ Language by Bjourne Stroustrup (70ties++)
Why would you need Github?
Let's say you want to download a file and work on it. You would have an overview of the changes in a Logfile.
If you work in a team, however, your teammates would simultaneously work on this file, thus you have to know the changes and someone has to maintain the codebase. In the worst cases, restore the older version.
For this reason, comes Github in place, where you have all the given functionalities encoded in a Cloud.
Basically. you decide on a folder on your Laptop and this folder will be part/ shared with the cloud on your demand.
Don't push your most valuable data on the cloud & keep it local.
(Stuff that is needed to be available everywhere, can be put on Github, or you Open Source your project. Thus you put the whole project on GitHub for the Good Cause. Or as a reference.)