Mensch mit Sonnenbrille schaut durch Lupe

Ask a Scientist

Niemand kann alles wissen. Auch wir nicht. Aber wir können nach­fragen. Schreib uns, was dich im Bereich der Elektro­technik & IT interessiert und wir schicken es weiter. An Expert:innen, die auch nicht alles wissen. Aber die Antwort auf deine Frage.

Suche

Wie wurden Programmier­sprachen wie z.B. Python, Java, C++ entwickelt?

Von Hao

Wie wurden Programmier­sprachen wie z.B. Python, Java, C++ entwickelt?

Von Hao

Vorab – diese Programmiersprachen wurden aus einem wichtigen Grund entwickelt:

Computer und Menschen sprechen unterschiedliche Sprachen. Während die Sprachen der Menschen aus umfangreichen Alphabeten bestehen, besteht das Alphabet eines Computers nur aus Eins (1) und Null (0). Wie es auch unter uns Menschen unterschiedliche Sprachen und Dialekte gibt, mit denen wir uns untereinander verständigen, haben wir für das Programmieren eines Computers Sprachen entwickelt, die es uns erlauben in einer für uns Menschen verständlichen Form Programmcode zu verfassen.

Die Informatik ist die Welt der Einsen und Nullen, eine binäre Welt. Ein Computer arbeitet ausschließlich mit diesen Werten: einzelnen Bits (1 oder 0), in Blöcken von 8 Bits auch als Bytes bekannt. In den Anfangstagen war das die Art und Weise wie programmiert wurde. In Form von Binärcode auf Lochkarten.

Der Mensch ist nun nicht so gut darin ausschließlich mit binären Zahlen zu arbeiten wie ein Computer. Stell dir vor, dein Programm, das du schreibst, wäre eine reine Aneinanderreihung von 0 und 1. Das zu verstehen und Fehler zu erkennen wäre sehr schwierig.

Der erste Ansatz, das einfacher zu machen, war Assembler-Code. Einzelne Bit-Folgen, welche für bestimmte Befehle auf der CPU stehen, wurden mit Namen versehen. Dies ermöglichte Programme wie das folgende “Hallo Welt” Beispiel zu erstellen (Alles hinter den Strichpunkten (;) ist ein Kommentar, also nur für uns Menschen. Der Computer ignoriert diese).

Assembler Beispiel

Diese Art von Programmiersprache ist auf einen bestimmten Computer (bzw. dessen Prozessor) ausgelegt und funktioniert auch nur dort. Stell dir das vor wie einen Dialekt oder unterschiedliche Fremdsprachen. Jeder Typ von CPU (auch Hauptprozessor) spricht seinen eigenen Dialekt.

Assembler ist immer noch sehr schwer zu verstehen, aber auf jeden Fall besser lesbar, reiner Binärcode. Programme in Assembler zu schreiben ist aber immer noch sehr aufwendig. Vor allem sieht ein in Assembler geschriebenes Programm für verschiedene Prozessoren von handelsüblichen PCs oder aus dem mobilen Bereich (wie Smartphones oder Tablets) komplett anders aus.

Um Programme einfacher zwischen unterschiedlichen Systemen tauschen zu können, wurden dann bald erste, so genannte höhere Programmiersprachen, entwickelt. Zu den ersten zählen Sprachen wie FORTRAN oder LISP, die auch heute noch in bestimmten Bereichen oder in moderneren Varianten im Einsatz sind. Der wesentlichste Unterschied zwischen Assembler und höheren Programmiersprachen ist vor allem der, dass höhere Programmiersprachen unabhängig vom Prozessor sind. Das bedeutet, ich kann ein Programm in einer solchen Sprache schreiben und denselben Code auf unterschiedlichen Plattformen (heute wäre dies zB. der PC und das Smartphone) zum Laufen bringen.

Eine weitere dieser Sprachen ist C, der Urvater von C++, das auch heute immer noch viel verwendet wird. Im Vergleich zum vorherigen Assembler “Hallo Welt” Beispiel findest du unterhalb ein „Hallo Welt“ Programm, geschrieben in C.

C Beispiel

Diese paar Zeilen machen im Grunde dasselbe wie die fast doppelt so vielen Zeilen Code in Assembler. Du kannst es aber unabhängig von der Art des Prozessors auf unterschiedlichen Computern ausführen, ohne etwas am Code zu ändern. Dies ist möglich Dank des Compilers. Der Compiler übersetzt den Source Code (auch Quelltext) in Maschinencode. Also im Grunde wie ein Übersetzer ein Buch vom Englischen ins Deutsche übersetzt. Beim Kompilieren wird aus dem für uns Menschen verständlichen Source Code der für den Computer verständliche Binärcode erstellt.

Ein C Programm musst du auf jeder Plattform, also Art des Computers (CPU, Betriebssystem (sofern es eines gibt), etc.) neu kompilieren. Wenn du einen Windows PC hast und dort aus dem Code ein „hallo.exe“ erstellst (das, was beim Kompilieren herauskommt), kann ich das nicht auf meinem Linux Rechner ausführen. Ich kann aber den Code ganz einfach nehmen und bei mir neu kompilieren.

Um ein Programm nicht für jede Art von Computer immer neu kompilieren zu müssen, gibt es neben den kompilierten Sprachen auch interpretierte Sprachen, häufig auch Skriptsprachen genannt. Dazu zählt zum Beispiel Python. Das Prinzip ist dasselbe wie bei C: Du schreibst deinen Source Code, dieses Mal in der Programmiersprache Python: nun willst dein Programm mit anderen teilen. Anstatt es aber jetzt immer wieder neu zu kompilieren, lässt du es von einem anderen Programm, dem Interpreter, interpretieren. Das kannst du dir in etwa so vorstellen wie einen Dolmetscher, der eine Rede live in eine andere Sprache übersetzt.

Bei Java handelt es sich um eine Mischform. Java Code wird im ersten Schritt auch einmal kompiliert – wie bei C – jedoch nicht direkt in Maschinensprache, sondern in eine Zwischensprache, Bytecode genannt. Dieser Bytecode wird dann in einem Programm, der “Java virtuellen Maschine”, ausgeführt.

Wozu braucht man nun diese unterschiedlichen Arten von Programmiersprachen?

Mit neuen Programmiersprachen wird versucht, Probleme oder Einschränkungen von anderen Sprachen zu beheben. Oder ein spezielles Problem einfacher lösen zu können. C Programme sind sehr schnell, aber auch komplexer zu erstellen, da du dich als Programmierer:in um sehr vieles selbst kümmern musst. Python und Java auf der anderen Seite erlauben dir meist, mit weniger Zeilen Code dasselbe Ergebnis zu erzielen und du kannst nicht so leicht Fehler machen. Mit C++ und Java kannst du objektorientiert programmieren (mit Python auch). Das ist eine spezielle Art, wie du dein Problem mit Code beschreibst. Neben objektorientierter Programmierweise gibt es noch funktionale Programmierung (LISP oder auch mit Python möglich) oder die klassische prozedurale Programmierweise (C).

Du siehst, es gibt unterschiedliche Programmiersprachen aus unterschiedlichen Gründen. Die „beste“ gibt es dabei im Grunde nicht – solltest du dich auch schonmal gefragt haben. Jede ist auf Ihre Art für ein bestimmtes Problem besser oder schlechter geeignet. Sie alle dienen aber dazu, einem Computer zu erklären, wie er etwas machen soll. Und das aber auch für uns Menschen noch immer verständlich.

Beantwortet von Harald Schwab (BSc), Wissenschaftlicher Mitarbeiter im Studienbereich angewandte Informatik der FH JOANNEUM Kapfenberg.

Rasenmäh-Roboter besitzen momentan keine Intelligenz

Wie erkennen Rasenmäh-Roboter, wo sie mähen müssen?

Von Laurina

Wie erkennen Rasenmäh-Roboter, wo sie mähen müssen?

Von Laurina

Rasenmäh-Roboter besitzen momentan keine Intelligenz Eigentlich ist es ein alter Traum der Menschheit, intelligente Maschinen wie z.B. Roboter zu entwickeln. Die Intelligenz der derzeit vorhandenen Roboter entspricht aber der eines 3 bis 5-jährigen Kindes – kurz gesagt sie sind noch nicht sehr intelligent. Speziell die von Dir angesprochenen Rasenmäh-Roboter besitzen überhaupt keine Intelligenz. Sie erkennen daher auch nicht, wo Gras gemäht werden sollte. Derzeit muss man ihnen mittels eines eingegrabenen Drahtes sagen, wo die Grenzen der Rasenfläche sind. Sie fahren dann diese Fläche nach einem vorgegebenen Programm ab. Das Gras sollte nicht höher als 5 cm sein. Ihre Intelligenz besteht ausschließlich darin, dass sie wenn die Batterieladung einen Minimalwert – meistens 5% – erreicht sich selbsttätig zu einer Steckdose (Docking Station) bewegen und dort ungefähr 2 Stunden bleiben bis sie wieder einsatzfähig sind. Beantwortet von em. o.Univ.Prof. Dr. Dr.hc.mult. Peter Kopacek, Bereich Intelligente Handhabungsgeräte und Robotertechnik, TU Wien.
Ob die Fische bei einem Blitzeinschlag überleben ist von einigen Faktoren abhängig

Was passiert mit den Fischen, wenn ein Blitz ins Wasser ein­schlägt ?

Von Aleyna D.

Was passiert mit den Fischen, wenn ein Blitz ins Wasser ein­schlägt ?

Von Aleyna D.

Ob die Fische bei einem Blitzeinschlag überleben ist von einigen Faktoren abhängig

Bei einem Blitzschlag ins Wasser hängt es von vielen Faktoren ab, ob die Fische überleben oder nicht:

- Wie stromstark ist der Blitz,
- wie weit sind die Fische vom Blitzeinschlagspunkt entfernt, und vor allem
- in welcher Richtung stehen die Fische zum Blitzeinschlagspunkt: radial oder tangential.

 

Zur Erklärung:

Der Blitz ist eine Stromquelle und der Blitzstrom verteilt sich bei einem Einschlag im Wasser, wie auch am Boden radial. Jedes Lebewesen ist dann einer Spannung ausgesetzt. Steht der Fisch radial zum Einschlagspunkt, ist der Spannungsabfall am Fisch größer als wenn er tangential zum Blitz steht, und er hat dann weniger Überlebenschancen. Die Spannung, die auf den Fisch einwirkt, ist natürlich auch größer, je näher der Fisch sich am Blitzeinschlagspunkt befindet bzw. je größer die Blitzstromstärke ist.

Beantwortet von Dr. Wolfgang Schulz, Wissenschaftler bei der österreichischen Blitzforschungsstelle ALDIS (Austrian Lightning Detection and Information System).

Antikes Gebäude früherer Zivilisationen

Waren frühere Zivilisationen tech­nologisch höher entwickelt?

Von Nicholas

Waren frühere Zivilisationen tech­nologisch höher entwickelt?

Von Nicholas

Antikes Gebäude früherer Zivilisationen

Die Kulturen der Antike (wie z. B. Ägypter, Perser, Griechen, Römer) haben − gemessen am Stand ihres technologischen Wissens − erstaunliche Leistungen im Bereich der Bautechnik, Medizin, Astronomie und auch der Logistik/Organisation hervorgebracht. Ich erinnere nur an Bauwerke wie die Pyramiden oder die gräko-römischen Tempel, an Zahnprothesen und komplexe Kalender-Vorrichtungen (z. B. die astronomische Uhr von Antikythera). Vieles von diesem Wissen ist in den nachfolgenden Jahrhunderten verloren gegangen und musste erst wieder neu „gefunden“ werden. Es ist allerdings klar und unzweifelhaft, dass die früheren Zivilisationen vom heutigen technologischen Entwicklungsstand weit entfernt waren. Dieser ist das (Zwischen)Ergebnis eines langen Entwicklungsprozesses.

Beantwortet von Univ.-Prof. Mag. Dr. Petra Amann, Institut für Alte Geschichte und Altertumskunde, Papyrologie und Epigraphik an der Universität Wien

Gibt es bereits rechenfähige Quanten­computer?

Von Bettina

Gibt es bereits rechenfähige Quanten­computer?

Von Bettina

Die Antwort ist im Prinzip „Ja“, aber ihr Zahlenraum ist sehr begrenzt. Der bisher größte rechenfähige „Quantencomputer“ konnte nur bis 15 zählen und wurde von einer Gruppe von Wissenschaftlern in Kalifornien entwickelt. Genauer gesagt, konnte dieser Quantencomputer die Faktoren der Zahl 15 bestimmen, also 5 und 3 (5x3=15). „Dafür braucht man keinen Quantencomputer“, wirst du dir denken! Aber man muss, wie bei allen wissenschaftlichen Entdeckungen, bei den einfachen Sachen beginnen.

Ein Quantencomputer arbeitet, wie andere Computer auch, mit sogenannten Bits, oder auch Quanten-Bits (Qubits). Jeder (Qu)Bit kann den Wert 0 oder 1 annehmen, und wenn man die 0 und die 1 aneinander reiht, erhält man eine sogenannte Binärzahl. Beispielsweise entspricht die Binärzahl 1011 „unserer“ 11. Mit 4 Qubits kann man also von 0 bis 15 zählen, wie bei dem oben erwähnten Quantencomputer aus Kalifornien.

Es gibt Wissenschaftler, die im Prinzip noch mehr Qubits zusammenlegen konnten (man nennt diese Quantenzusammenlegung „Verschränkung“). Zum Beispiel konnte eine Gruppe aus Innsbruck 14
Qubits verschränken, was im Prinzip bedeuten würde, dass ihr Quantencomputer bis 16387 zählen könnte. Nur ist ihre Verschränkung noch etwas ungenau und man konnte damit noch keine wirklichen Rechnungen anstellen. Trotzdem ist das ein riesiger Fortschritt im Vergleich zum 4-Qubits Quantencomputer aus Kalifornien.
Die Kanadische Firma „D-Wave“ versucht, kommerzielle Quantencomputer herzustellen und behauptet, einen Computer mit 512 Qubits gebaut zu haben. Es ist aber zweifelhaft, ob es ein echter Quantencomputer ist, und ob er jemals schneller als ein „normaler“ Computer werden kann (zur Zeit ist er sicherlich viel langsamer). Trotzdem werden NASA und Google daran sehr interessiert sein.

Der Weg zu einem rechenfähigen Quantencomputer ist lang, aber die Fortschritte der letzten Jahre waren enorm, so dass es vielleicht in 10-20 Jahren soweit sein wird.

Beantwortet von Univ.-Prof. Dr. Enrico Arrigoni, Institut für Theoretische Physik und Computational Physics der TU Graz.

Aufzug von Innen

Wie funktioniert ein Aufzug?

Von Denise

Wie funktioniert ein Aufzug?

Von Denise

Aufzug von Innen

Ein Aufzug ist dazu da, Personen oder Lasten auf- oder abwärts zu transportieren. Damit ein Aufzug funktioniert, braucht man eine Kabine, Seile, Rollen und ein Gegengewicht und natürlich den Antrieb.

Der Antrieb ist oberhalb der Kabine angebracht. An einem Ende der Seile, die über die Antriebsrolle geführt werden, ist die Kabine und am anderen Ende ein Gegengewicht befestigt. Je nachdem in welche Richtung sich der Antrieb dreht, fährt der Aufzug hinauf oder hinunter. Das Gegengewicht dient dabei als Gewichtsausgleich, um den Antrieb zu entlasten.

Wenn Du das nächste Mal mit dem Aufzug fährst, achte darauf, ob der Aufzug von oben oder unten kommt – das Gegengewicht wird sich immer in die entgegengesetzte Richtung bewegen.

Beantwortet von Ing. Dieter Friedl, TÜV AUSTRIA Aufzugstechnik.

Raum voller QR-Codes

Wie funktioniert ein QR-Code?

Von Annabelle

Wie funktioniert ein QR-Code?

Von Annabelle

Raum voller QR-Codes

QR steht für die englischen Worte “Quick” und „Response”, was schnelle Reaktion bedeutet, und Schnelligkeit war auch der Grund für die Erfindung dieser Art von Codes.
Händische Eingaben dauern oft sehr lange, zum Beispiel früher, als eingekaufte Artikel an der Supermarktkasse händisch eingetippt werden mussten. Deshalb ist man auf die Idee gekommen, die Eingabe automatisch über einen Computer zu machen.

Nun können Computer nicht so gut lesen wie wir Menschen, und tun sich zum Beispiel schwer mit Handschriften. Man nahm daher einfache Muster, die der Computer gut erkennen kann, zuerst in Form von dicken und dünnen schwarzen Strichen (Strich-Codes). Durch das einfache Drüberziehen der eingekauften Sachen im Supermarkt ging das Bezahlen nun viel schneller. Der Kassencomputer erkennt den Code und übersetzt die darin enthaltenen Informationen über Preis und Bezeichnung des Artikels, rechnet die Preise zusammen und druckt die Information auf dem Kassenbon aus.

QR-Codes sind eine Weiterentwicklung von Strichcodes, die Striche sind durch ein schwarz-weißes Punktmuster ersetzt. Man kann sich das so wie ein Schachbrett vorstellen, nur das die schwarzen und weißen Felder vertauscht werden können und ihre Anzahl nicht gleich sein muss. Auch diese Darstellung können Computer gut lesen und es ist damit eine sehr große Anzahl an unterschiedlichen Codes möglich. Die Unterscheidbarkeit ist auch wichtig, denn es sollten nicht zwei Dinge den gleichen Code haben. Man würde nicht gerne an der Kasse für einen Liter Milch 500€ zahlen, weil die denselben Code wie ein Fernseher hat. Mit QR-Codes, der nur 6x6 Punkte groß sind, können ca. 70 Milliarden unterschiedliche Codes erzeugt werden. QR-Codes haben oft 100x100 Punkte, man kann sich also vorstellen wie viele Möglichkeiten es da gibt, auch wenn man etwas Platz für die Orientierung (die Quadrate an den Ecken eines QR-Codes) bzw. die Fehlerkorrektur vorsehen muss. Denn auch wenn der Code beschädigt ist (z.B. es fehlt ein Stück oder er ist zerkratzt), kann er noch erkannt werden.
Und so können diese Codes in vielen Bereichen eingesetzt werden, das Prinzip der computer-lesbaren Information ist aber immer dasselbe. Wenn man zum Beispiel einen QR-Code mit dem Handy fotografiert, funktioniert das so ähnlich wie das Drüberziehen eines Artikels im Supermarkt. Der Computer, der in einem Handy eingebaut ist, erkennt den Code und verarbeitet ihn weiter. Anstelle von Preis oder Artikelbezeichnung ist aber zum Beispiel eine Website hinterlegt, zu der sich das Handy nun direkt verbindet. Und das geht wesentlich schneller (eben mit Quick Response) als die Internetadresse händisch einzutippen.

Beantwortet von Ass.-Prof. Mag. Dr. Gerhard Leitner, Institut für Informatik-Systeme, Alpen-Adria Universität Klagenfurt.

Mikrowelle in einer Küche

Wärmt eine Mikro­welle von innen oder von außen?

Von Florian

Wärmt eine Mikro­welle von innen oder von außen?

Von Florian

Mikrowelle in einer Küche

Die Mikrowelle wirkt grundsätzlich von innen. Die Welle dringt in den Körper, den sie heizt, ein und verliert dabei Energie. Diese Energie wird in Wärme umgewandelt. Die Welle wird dabei geschwächt, oder - mit einem Fachausdruck - absorbiert. Das kann natürlich bedeuten, dass die Welle nur ein Stück weit in einen Körper eindringt und dabei restlos absorbiert wird. Dann wird eben nur eine Schicht in der Nähe der Oberfläche beheizt, die von der Mikrowelle trotz Absorption noch erreicht werden kann.

Verschiedene Materialien nehmen die Energie der Welle verschieden gut auf oder absorbieren verschieden gut. Wir sehen das etwa, wenn wir einen Apfelstrudel in einem Mikrowellenherd wärmen. Der Teig absorbiert Mikrowellen nicht so gut und bleibt daher kalt. Die eher feuchte Fülle absorbiert Mikrowellen stärker und wird daher sehr heiss.

 

Beantwortet von ao. Univ. Prof. Dr. Herbert Störi, Leiter des Instituts für Angewandte Physik der TU Wien.

Aufbau und Funktion eines Automotors

Wie funktioniert ein Automotor?

Von Alihan

Wie funktioniert ein Automotor?

Von Alihan

Aufbau und Funktion eines Automotors

Der heutzutage am weitesten verbreitete Motor im Automobilbau ist der Verbrennungsmotor. Dieser wandelt die chemische Energie eines Kraftstoffs durch Verbrennung in mechanische Arbeit um. Die Verbrennung findet dabei im Brennraum statt, in dem ein Gemisch aus Kraftstoff und Umgebungsluft gezündet wird. Die Wärmeausdehnung des durch die Verbrennung heißen Gases wird genutzt, um einen Kolben zu bewegen. Bekannte Beispiele für Verbrennungsmotoren in Automobilen sind der Ottomotor und der Dieselmotor.


Aufbau:

Grundsätzlich besteht der Verbrennungsmotor aus dem Gehäuse, das sich in einzelnen Zylinder untergliedern lässt. Ein Zylinder besteht aus dem Kolben und der Pleuelstange. Im oberen Bereich des Gehäuses ist die Nockenwelle untergebracht, die für die Steuerung der Ventile (Einlass- bzw. Auslassorgan) zuständig ist. Die Kurbelwelle befindet sich an der Unterseite des Motorblocks und ist mittels Pleuelstange mit dem Kolben verbunden. Des Weiteren ist die Kurbelwelle für die Weiterleitung der mechanischen Arbeit an das Getriebe zuständig. Zum Funktionieren des Verbrennungsmotors beim Ottomotor werden zusätzlich noch Zündkerzen benötigt.


Funktionsweise:

Alle Kolbenmotoren arbeiten in vier Prozessschritten: Ansaugen, Verdichten, Arbeiten und Ausstoßen. Je nach Bau- und Funktionsweise des Motors werden diese Vorgänge unterschiedlich gesteuert. Wichtig für die Funktion ist, dass durch die Verbrennung eines Kraftstoff-Luft-Gemischs die Ausdehnung bei höherem Druck geschieht als das Verdichten.


Beschreibung der vier Prozessschritte:

1. Im ersten Takt wird während der Abwärtsbewegung des Kolbens ein Kraftstoff-Luftgemisch in den Zylinder "gesaugt".

2. Während des zweiten Taktes wird dieses Kraftstoff-Luftgemisch im Zylinder durch die Aufwärtsbewegung des Kolbens verdichtet. Am Ende des zweiten Taktes erfolgt die Zündung (bei Ottomotoren durch die Zündkerzen, bei Dieselmotoren durch Selbstzündung).

3. Im dritten Takt verbrennt das gezündete Kraftstoff-Luft-Gemisch. Durch den damit entstehenden Anstieg der Temperatur und des Drucks wird der Kolben im Zylinder nach unten bewegt. Diese Längsbewegung des Kolbens wird dabei über die Pleuelstange auf die Kurbelwelle weitergeleitet und in eine Drehmoment-Bewegung umgesetzt.

4. Im vierten Takt schiebt der sich nach oben bewegende Kolben die verbrannten Abgase aus dem Zylinder.

Je nach Anforderung an das Fahrzeug, variiert die Leistung der im Automobil eingesetzten Verbrennungsmotoren. So ist es beispielsweise notwendig, um genügend Leistung für den Transport von schweren Gütern zu erzeugen, starke Motoren einzusetzen. Im Falle von geringen Leistungsanforderungen an das Fahrzeug kommen dementsprechend nur leistungsschwächere Verbrennungsmotoren zum Einsatz. Einfach gesagt, je leistungsintensiver die Anforderungen an den Verbrennungsmotor sind, desto stärker (mehr PS) fällt die Dimensionierung dessen aus.

Beantwortet von Michael Planer, MSc, Projektassistent am Institute for Powertrains & Automotive Technology der TU Wien.

Ask a scientist.

Wie kommt der Strom ins E-Bike? Was kann der klügste Roboter? Warum ist mein Internet heute so langsam? Oder brennt dir eine ganz andere Frage unter den Nägeln? Stelle sie hier!

Ask a scientist.

Wie kommt der Strom ins E-Bike? Was kann der klügste Roboter? Warum ist mein Internet heute so langsam? Oder brennt dir eine ganz andere Frage unter den Nägeln? Stelle sie hier!