In the rapidly evolving landscape of artificial intelligence, generative AI tools are demonstrating incredible potential. However, their potential for harm is also becoming more and more apparent. Together with our partner VERSES, we have visualized some concerns regarding generative AI tools using data from a variety of different sources.
Da der erste KI-Hype abgeklungen ist, richtet sich der Blick verstärkt auf die mannigfaltigen Probleme, die diese neue Technologie mit sich bringt. Dieser Artikel von „Visual Capitalist“ bietet eine recht gute Übersicht. Eine deutsche Übersetzung finden Sie hier.
While delayed by several weeks compared to their initial release goals, today marks the availability of Fedora 39 as a wonderful upgrade to this popular Linux distribution.
Fedora, die Linux-Distribution, welche Linus Torvalds verwendet, hat heute das Upgrade zu Version 39 freigegeben. Sollte es Ihnen nicht angezeigt werden, lesen Sie bitte diesen Artikel in unserem Blog.
Übrigens, falls Sie als Umsteiger aus der Windows-Welt sich nicht so recht mit GNOME und KDE anfreunden können, wussten Sie schon, dass es eine Cinnamon-Variante von Fedora gibt? Cinnamon ist der wohl umsteigerfreundlichste Desktop, und natürlich kann man ihn auf jeder Variante von Fedora nachinstallieren. Aber es ist immer besser, wenn der gewünschte Desktop bereits in der Installation nativ integriert ist. Hier ist der Link zur Cinnamon-Variante von Fedora.
Made public today was CVE-2023-43785 as an out-of-bounds memory access within the libX11 code that has been around since 1996. A second libX11 flaw is stack exhaustion from infinite recursion within the PutSubImage() function of libX11… This vulnerability has been around since X11R2 in February of 1988. A third libX11 vulnerability made public today is an integer overflow within XCreateImage() that leads to a heap overflow… That too has been around since X11R2 in 1988.
Immer noch sehr viele Linux-Distributionen verlassen sich auf das X11 Protokoll, aber dieses ist notorisch unsicher – “80,000 lines of sheer terror“, sagte ein Sicherheitsforscher dazu. 35 Jahre alte Fehler, die erst jetzt veröffentlicht werden! Man muss es schon sagen, die Tatsache, dass über lange Zeit Linux-Systeme mangels Verbreitung kaum angegriffen wurden, hat offenbar zu einer gewissen Laxheit in Bezug auf Sicherheitsthemen bei den Linux-Entwicklern geführt.
Abhilfe ist jedoch in Sicht, immer mehr Distributionen stellen auf Wayland um, welches das X11 Protokoll durch ein sicheres, modernes und einfacheres Protokoll ersetzt. Problematisch daran ist allenfalls, dass das dazu führen könnte, dass die Pflege von X11 noch mehr vernachlässigt wird, obwohl die Adaption von Wayland bisher recht schleppend verläuft.
Früher gab es für die Aktualisierung von GRUB2 in Fedora zwei unterschiedliche Befehle. Für BIOS-Systeme war es: sudo grub2-mkconfig -o /boot/grub2/grub.cfg und für EFi-Systeme: sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg.
Inzwischen hat jedoch Fedora die durchaus begrüßenswerte und vernünftige Entscheidung getroffen, für beide Systeme nur noch ein Kommando zu verwenden, nämlich das für BIOS-Systeme. Im EFI-Verzeichnis wird neuerdings nur noch auf eine einheitliche grub.cfg gesourced, und diese tatsächliche grub.cfg liegt für beide Systeme in /boot/grub2/grub.cfg.
Daraus ergibt sich jedoch eine tückische Falle. Denn auf vielen Webseiten finden sich noch immer, so wie eingangs beschrieben, zwei verschiedene Befehle je nach System. Aber wenn man in einem neueren Fedora nur einmal den EFI-Befehl eingibt, ist der Update-Mechanismus danach kaputt. Wenn dann z.B. in dnf eine neue Kernel-Version installiert wird, wird der danach ausgeführte implizite Update für GRUB2 zwar die /boot/grub2/grub.cfg bearbeiten, aber nicht die /boot/efi/EFI/fedora/grub.cfg. Diese zweite Datei hat jedoch beim Booten in GRUB Vorrang, und deshalb wird der neue Kernel dann nicht gestartet. Und wie es mit späteren größeren Updates aussieht, z.B. Update auf eine höhere Fedora-Version, ist sowieso ungewiss.
und verweist bzw. sourced auf die grub.cfg in /boot/grub2. Und danach funktioniert auch wieder der dnf-Mechanismus, z.B. in dnfdragora.
Ergänzung 13.08.2023: Es ist möglich, dass durch den fehlgegangenen efi-update-grub außerdem die Variable GRUB_ENABLE_BLSCFG in /etc/default/grub verstellt wurde. Diese Variable sollte unter Fedora auf „true“ stehen, könnte aber durch den veralteten efi-update-grub auf „false“ gegangen sein (GRUB_ENABLE_BLSCFG=false). Dies könnte wiederum mit anderen Update-Mechanismen von Fedora kollidieren und zu weiteren Problemen führen. Als Abhilfe den Wert auf „true“ setzen (GRUB_ENABLE_BLSCFG=true) und anschließend
„sudo grub2-mkconfig -o /boot/grub2/grub.cfg“. Mehr Info zu diesem Problem hier: https://forums.fedoraforum.org/showthread.php?331019-Fedora-38-not-booting-with-kernel-version-gt-6-4-6
Let’s admit the truth. Testing is often an overlooked aspect of software development and an afterthought in most teams. There are very few developers who actively enjoy writing tests. Only a few know how to write automated tests effectively. Albeit we all admit and learned that testing helps ensure that our application is robust, reliable, and works as intended, there’s not much traction in this area. In this article, we’ll look at the most common testing Spring Boot testing best practices to provide a good starting point for testing enterprise Spring Boot applications.
Sehr interessanter Überblick für die Strategien zum „Entlausen“ von Spring Boot Code. Übrigens konnte ich neulich nicht mehr drucken. Treiber neu installiert, dies das. Am Ende guckte ich dann doch mal auf den Drucker. Ich hatte es noch gehört, am Klicken der Rückmeldungen, ein winziges Insekt war über dessen Touchscreen spaziert – und hatte damit wahllos irgendwelche Funktionen angewählt, die den Drucker in einen Wartezustand (auf eine weitere Eingabe) versetzt hatten, und solange er darin war, nahm er keine Druckaufträge mehr an. Tja, es gibt sie immer noch, die echten Bugs (Käfer), genau wie damals ihren Namensgeber, dem verschmorten Insekt, das 1950 oder so einen der ersten Großrechner per Kurzschluss lahmgelegt hatte.
Wenn der Compiler versteht, dass OPENSSL_cleanse keine Seiteneffekte hat außer key zu überschreiben, dann ist das ein klarer Fall für die Dead Store Elimination. Ähnlich sieht es mit einem memset() vor einem free() aus. Das ist vor ein paar Jahren aufgefallen, dass Compiler das nicht nur tun können sondern sogar in der Praxis wirklich tun. Plötzlich lagen im Speicher von Programmen Keymaterial herum. Also musste eine Strategie her, wie man den Compiler dazu bringt, das memset nicht wegzuoptimieren.
Sehr spannende Analyse von Fefe, wie Optimierungen des Compilers die Sicherheit von Software untergraben können. Da gibt man sich als Programmierer alle Mühe, sensible Daten aufzuräumen, und dann schmeißt der Compiler den Code wieder raus, weil er ihn für unnötig hält. Und Abhilfe ist gar nicht so einfach.
Kein Wunder, dass immer neue Lücken gefunden werden in Betriebssystemen und Software. Die Komplexität der SW-Entwicklungs-Prozesse hat ein derartiges Ausmaß angenommen, dass sie nur noch mit sehr hohem Testaufwand beherrschbar sind. Fefes Artikel beleuchtet dabei den interessanten Aspekt, dass sogar eine neue Compiler-Version Sicherheitslücken in Code reißen könnte, der ursprünglich sicher geschrieben war. Wer würde bei Recompilation mit einer neuen Compiler-Version den erzeugten Assembler-Code neu überprüfen? Es benötigt also umfangreiche und ständige Kontrollen des Outputs, um die Stabilität der Ergebnisse des Codes auch bei der Weiterentwicklung zu gewährleisten.
für den Einsatz im Home-Office und beim Kunden vor Ort.
Über uns
Die Cephei AG ist ein Software-Unternehmen, das Konzerne bei der digitalen Transformation mit innovativen Konzepten und Produkten unterstützt. Wir entwickeln seit über 30 Jahren Lösungen um bestehende Geschäftsprozesse zu digitalisieren und neue digitale Geschäftsmodelle zu erschließen. Unsere Spezialgebiete sind Produktkonfiguration, Web-Portale, elektronische Beratungslösungen, mobile Apps und Telematik-Anwendungen.
Unsere Anforderungen für die ausgeschriebene Stelle
Universitätsabschluss im Bereich Informatik oder eine vergleichbare Ausbildung (bzw. ggfs. Nachweis der Befähigung durch bisher durchgeführte Projekte)
1 – 2 Jahre Berufserfahrung min., Praktika im Studium werden berücksichtigt
Java
Spring Boot
Hibernate
SQL
GIT
REST
Nicht Bedingung, aber durchaus willkommen wären außerdem
Kubernetes, Docker
Functional Programming
Clean Code
Postgres
Javascript
Application-Security
Microservice Architecture
Wir berücksichtigen auch Berufseinsteiger, setzen jedoch eine gewisse Mindesterfahrung mit der SW-Entwicklung voraus. Als anerkannter Ausbildungsbetrieb (IHK) haben wir bereits mehrere Fachinformatiker ausgebildet und Erfahrung darin, Berufseinsteigern eine gute Perspektive zu bieten.
Weitere Informationen
Falls Sie für Ihre neue Stelle bei uns umziehen müssen, helfen wir Ihnen mit einem Zuschuss zu den Umzugskosten und bei der Wohnungssuche.
In unserem Team arbeiten viele langjährige Mitarbeiter. Mehr als 60% der Belegschaft sind seit mehr als 10 Jahren bei uns. Wir bieten Vertriebsprovision und Erfolgsbeteiligung und fördern aktiv Familien mit Kindern durch eine Kinderzulage sowie flexibles Zeitmanagement mit ggfs. der Möglichkeit zum Home-Office.
Unsere Mitarbeiter üben ihre Tätigkeit vorwiegend im mobilen Office aus, jedoch sind gelegentlich Arbeiten vor Ort beim Kunden erforderlich. Deshalb sollten Sie im Einzugsbereich München wohnen, oder planen, dorthin umzuziehen, wenn Sie sich bei uns bewerben möchten.
Über Ihre Bewerbung mit den üblichen Unterlagen würden wir uns sehr freuen. Bitte senden Sie Ihre Bewerbung entweder via Monster oder an bewerbung@cephei.com.
Für telefonische Rückfragen oder weitere Informationen wenden Sie sich bitte an Frau Ahrens, Tel. 089 898267-10.
Cephei AG
Herzogstr. 33
80803 München
Tel: 089 898267-0
Fax: 089 898267-22 https://www.cephei.com
bewerbung@cephei.com
Neulich wollte ich einen längeren Text mit ChatGPT diskutieren. Allerdings gibt es in dessen Version 4.0 derzeit eine Prompt-Begrenzung auf 2048 Zeichen. Naja, kein Problem, dachte ich, da soll mir doch ChatGPT ein Programm dafür schreiben, und sich selbst am eigenen Schopf aus dem Gefängnis seiner Begrenzung befreien. Allerdings sollte das nicht ein simpler Split sein, sondern mit Überschriften für die einzelnen Teile und der Möglichkeit, sowohl einzelne Dateien zu erzeugen, als auch eine Gesamtdatei, die alle Teile, getrennt durch Überschriften, enthält. Außerdem sollte das Programm nach Möglichkeit nicht innerhalb einer Zeile umbrechen.
(Bestehende Tools legen einzelne Dateien ab, aber das ist ziemlich schwierig zu handhaben, wenn man die einzelnen Stücke in den Prompt einfügen will. Für so etwas ist eine Gesamtdatei mit Separatoren leichter zu bearbeiten.)
Jedenfalls, das erwies sich zunächst als gar nicht so einfach, ChatGPT servierte mir erstmal zwei Entwürfe, die beide mit oom-kills endeten (mein Rechner ging komplett in die Knie dabei, und ich habe mich schon gefragt, ob ich etwa gerade gehackt werde 😀). Dann kam aber doch eine funktionierende Version dabei heraus, die, wie ich meine, einen zwar ungewöhnlichen, aber dennoch sehr interessanten Ansatz verfolgt, um die Anforderungen zu erfüllen. Ich hatte dabei sozusagen die Rolle des Projektleiters, diktierte meine Anforderungen an die Software, aber ich war auch Tester und Mentor, d.h. ich habe auf Fehler und wünschenswerte Features hingewiesen. Nun, das dauerte zwar ein wenig, aber dann war die erste Version fertig, schneller, als ich das selbst hinbekommen hätte, und außerdem weitaus effizienter als mit Stack Overflow. Diese erste Version hatte dann nur noch einen Fehler, wenn eine Zeile länger war als die Begrenzung, erzeugte das Skript einen Teil, der die Begrenzung überschritt.
Also gab ich ChatGPT den Auftrag, eine Lösung dafür zu finden, und erklärte ihm, dass er Zeilen, die länger als die Begrenzung sind, eben doch umbrechen soll, mit einem (optischen) Hinweis auf die Fortsetzung im nächsten Teil, und dass zusätzlich nicht mitten in einem Wort getrennt werden soll. Interessanterweise landete ChatGPT dabei dann völlig im Wald und erwies sich als hoffnungslos überfordert, eine Lösung für dieses Problemchen zu programmieren. Am Ende war sogar der Code völlig zerstört (nichts funktionierte mehr), und ChatGPT gab irgendwann tatsächlich auf (es erzeugte keinen neuen Code mehr).
Nun ja. Das kleine Python-Tool finden Sie untenstehend. Vielleicht können Sie es einmal brauchen, es eignet sich übrigens auch für Twitter u.dgl. (Für Twitter etc. müsste man aber mit –max-chars eine andere Begrenzung setzen, der voreingestellte Default ist für ChatGPT-Prompts).
Den Teil, den ChatGPT nicht geschafft hat, habe ich dann eben selbst hinzugefügt (er ist mit blauer Schrift gekennzeichnet). Ich fand das insgesamt eine recht spannende Erfahrung. Eine Fragestellung, die ich durchaus als nicht so trivial empfand, wurde mit einigen Anläufen und Hilfestellung (z.B. ist das RegEx-Muster zur Erkennung der Teiler von mir – das muss unbedingt eindeutig sein, damit es nicht versehentlich falsch aufteilt, und das Muster, das ChatGPT zuerst vorschlug, hatte diese Gefahr) recht ordentlich gelöst. Aber bei etwas, das auf mich nicht allzu kompliziert gewirkt hat (und es dann auch nicht war), verrannte sich ChatGPT völlig. Auch dass ChatGPT den ursprünglich funktionierenden Entwurf bei diesem Fehlerbehebungsversuch völlig zerstörte, zeigt m.Mng., dass ChatGPT zwar eine große Hilfe beim Programmieren sein kann, aber ohne die Zusammenarbeit und die Hilfe eines menschlichen Entwicklers ist es, zumindest bisher, aussichtslos. Das wird dauern, bis ChatGPT Programmierer ersetzen kann – falls das jemals überhaupt eintreten wird. Die sich selbst weiter entwickelnde KI ist noch in weiter Ferne, würde ich meinen.
import argparse, os, re
def split_text(input_filename, output_filename, max_chars, delimiter, single_output, replace_input):
with open(input_filename, 'r') as file:
text = file.read()
paragraphs = text.split(delimiter)
result = []
part_count = 1
result.append(f"Teil {part_count:02}\n{'='*20}\n")
char_count = len("Teil 01\n" + "=" * 20 + "\n")
header_length = len(f"Teil {part_count:02}\n" + "=" * 20 + "\n")
for paragraph in paragraphs:
if char_count + len(paragraph) + len(delimiter) > max_chars:
part_count += 1
result.append(f"Teil {part_count:02}\n{'='*20}\n")
char_count = header_length
while len(paragraph) + header_length > max_chars:
slice_pos = max_chars-header_length
while slice_pos >= 0:
if paragraph[slice_pos] == " ":
break
slice_pos -= 1
if slice_pos == 0:
slice_pos = max_chars-header_length
else:
slice_pos += 1
pglist = list(paragraph)
pglist[slice_pos-1] = '>'
paragraph = ''.join(pglist)
result.append(paragraph[:slice_pos])
result.append(delimiter)
paragraph=paragraph[slice_pos:]
part_count += 1
result.append(f"Teil {part_count:02}\n{'='*20}\n")
char_count = header_length
result.append(paragraph)
result.append(delimiter)
char_count += len(paragraph) + len(delimiter)
if single_output:
if replace_input:
os.remove(input_filename)
with open(output_filename, 'w') as file:
file.write("".join(result))
else:
base, ext = os.path.splitext(output_filename)
for i, part in enumerate(re.split("Teil\s\d+(?=\n)\n====", "".join(result))[1:]):
with open(f"{base}-{i+1:02}{ext}", 'w') as file:
file.write(f"Teil {i+1:02}\n===={part}")
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="Split text files into smaller parts.")
parser.add_argument('input', help="Input filename")
parser.add_argument('-o', '--output', help="Output filename", default=None)
parser.add_argument('-m', '--max-chars', type=int, help="Maximum number of characters per part", default=2048)
parser.add_argument('-d', '--delimiter', help="Delimiter between paragraphs", default="\n\n")
parser.add_argument('-s', '--single-output', action='store_true', help="Store the result in a single output file")
parser.add_argument('-r', '--replace-input', action='store_true', help="Replace the input file with the result")
args = parser.parse_args()
if args.output is None and not args.replace_input:
parser.error("Output filename must be provided if not using --replace-input")
output_filename = args.output if args.output is not None else args.input
split_text(args.input, output_filename, args.max_chars, args.delimiter, args.single_output, args.replace_input)
Sie können das Script entweder aus obiger Box herauskopieren, oder eine Archivdatei herunterladen. (OpenAI erhebt keinerlei Anspruch auf Copyright etc. und stimmt deshalb der Veröffentlichung zu).
Noch zwei Hinweise: Sollte bei Ihnen eine Teildatei auf Platte größer werden als die Begrenzung, liegt das vermutlich an Umlauten, bzw. daran, dass UTF8 für gewisse Zeichen auf Platte zwei Bytes erzeugt. Der tatsächliche Text in einer Teildatei wird aber (incl. Überschrift und Trenner) niemals größer als die Begrenzung. Außerdem müsste man eigentlich noch den Fall abgefangen, dass max_chars kleiner angegeben wäre als die Länge der Separatoren, aber dazu war ich zu faul, wer würde schon so kleine Teile brauchen?
After being deprecated for several years, Security Enhanced Linux „SELinux“ beginning with the Linux 6.4 kernel can no longer be run-time disabled.
Falls Sie künftig SELinux abschalten möchten, müssen Sie das mit dem Kernel-Parameter „selinux=0“ tun, die Laufzeitunterstützung dafür wird entfernt. Oder Sie verwenden den Eintrag „SELINUX=permissive“ in /etc/selinux/config – das hat den Vorteil, dass für mögliche Sicherheitsverstöße zumindest ein Log-Eintrag erstellt wird, obwohl SELinux auch damit defacto abgeschaltet ist.
Das französische Spielestudio Drama sorgt mit einem Trailer für Gesprächsstoff in der Community. Es geht um ein Actionspiel namens Unrecord, dessen Bewegtbilder sehr an echte Aufnahmen von Bodycams erinnern, wie sie Polizisten oder Soldaten im Einsatz tragen. Tatsächlich soll das Material aber auf Basis der Unreal Engine 5 vollständig in auf einem PC berechnet worden sein.
Was mittlerweile im Bereich Computergrafik möglich ist, ist wahlweise faszinierend oder erschreckend. Sicher, im Beispielvideo (siehe Beitrag auf golem.de) für Unrecord gibt es genügend Dinge, anhand derer man den künstlichen Ursprung immer noch erkennen kann. Aber dass die Entwicklung rasant voranschreitet, wird man nicht bestreiten können, und das Missbrauchspotential dürfte enorm sein.
Vielleicht haben Sie mitbekommen, dass Elon Musk mit OpenAI ziemlich im Clinch liegt, obwohl er es doch mitgegründet hat. Das liegt daran, dass Microsoft sich OpenAI und ChatGPT „geschnappt“ hat und das Projekt nun nach Kräften versucht zu finanzialisieren – Elon Musk aber OpenAI als non-profit gedacht hatte, weil er KI demokratisieren will. Inzwischen hat Musk eine eigene KI angekündigt „TruthGPT“ und auch schon eine Domain dafür reserviert (x.ai), die aber noch nicht funktional ist, und ob TruthGPT schon existiert und falls ja, welchen Entwicklungsstand es bisher hat, ist unklar.
Jedenfalls gibt es weltweit viele Bestrebungen auf dem Weg zur künstlichen Intelligenz, und Elon Musk ist nicht der einzige, der das Thema für so gefährlich und mächtig hält, dass es der breiten Öffentlichkeit zugänglich gemacht werden muss, um möglichen Missbrauch einzelner vermögender Akteure einzuhegen. Ein weiteres solches Projekt ist der eingangs verlinkte non-profit „Open Assistant“ und dieses ist besonders interessant, weil man dort mitmachen kann. Das Teuerste an einer AGI (Artificial General Intelligenz), bzw. bei KI allgemein, ist das Trainieren, weil dabei Menschen die Antworten der KI einzeln sichten und bewerten müssen. Bei „Open Assistant“ kann dazu jeder mitmachen und erhält Punkte (und damit mehr Rechenzeit für die eigenen Fragen) im Austausch für seine Trainings-Arbeitsleistung. Das ist allein schon einmal deshalb spannend, weil man tiefe Einblicke in die Funktionsweise und Leistungsfähigkeit solcher Systeme erhält, aber es ist auch dem Open Source-Gedanken verpflichtet.
Von der Leistungsfähigkeit ist „Open Assistant“ von ChatGPT zwar noch um einiges entfernt (ungefähr Kind vs. Jugendlicher, sozusagen) – aber wenn nun viele mithelfen, muss das ja nicht lange so bleiben. Außerdem hat ChatGPT einen doch recht heftigen grün-woken Linksdrall, und nach ersten Tests ist „Open Assistant“ weitaus neutraler und berücksichtigt ein breiteres Spektrum an Meinungen.
Die ersten Nachrichten zu KI in der Softwareentwicklung waren regelrechte Hiobsbotschaften – über Systeme, die Programme automatisch vervollständigen und Programmierer damit überflüssig machen sollten. Schnell wurde jedoch klar: Es geht eigentlich nicht darum, wie schnell und wie viel Code eine KI schreibt. Es geht darum, ob Automatisierung es uns erlaubt, uns auf Wichtigeres zu konzentrieren … Aktuell sind wir in der Phase, in der wir ausloten, wie KI unser Leben als Programmierer leichter machen kann.
Sehr interessanter Artikel mit Praxisbeispielen, wie neuartige KI-Systeme Programmierer bei der Arbeit unterstützen können. Letztlich ist es meiner Ansicht so, wenn Routineaufgaben wegrationalisiert werden können, wird das der Qualität des Produkts zugutekommen, zum Einen, weil gerade bei den langweiligen Tätigkeiten am leichtesten Fehler passieren, zum Anderen, weil mehr Zeit für die qualitativen Herausforderungen bleibt.
Sam Altman is the CEO of OpenAI, the company behind GPT-4, ChatGPT, DALL-E, Codex, and many other state-of-the-art AI technologies.
Lex Fridman im Gespräch mit Sam Altman (CEO OpenAI). Sehr interessante und aufschlussreiche Einblicke in die Technik und Philosophie hinter ChatGPT. Altman hat große und gute Ziele für Künstliche Intelligenz, aber er spricht auch sehr offen über seine Sorgen und Ängste dazu.
Midjourney is an independent research lab exploring new mediums of thought and expanding the imaginative powers of the human species. We are a small self-funded team focused on design, human infrastructure, and AI.
DALL-E von OpenAI ist sicherlich bereits ein interessantes Experiment, aber falls Sie sich fragen, wo denn die richtig guten Bilder herkommen, vor allem die fotorealistischen Darstellungen, dann sollten Sie sich einmal Midjourney ansehen.
Beispielbilder finden Sie hier, und das ist wirklich beeindruckend, was mit dieser Engine bereits alles möglich ist. Illustratoren, Fotografen und ähnliche Berufe sollten wohl baldmöglich umsatteln.
PS: Das gewählte Beitragsbild ist doch eine fast perfekte Darstellung unserer Hampel-Regierung, finden Sie nicht?
Quelle Bild: DALL-E „chameleon caspar david friedrich“
Ein sehr interessanter Kommentar eines Lesers beschäftigt sich mit der Frage, ob ChatGPT auch Code von einer Sprache / einem System in ein(e) andere(s) transformieren kann. Das haben wir natürlich gleich einmal ausprobiert und durch ChatGPT den Code unseres Gesundheitstagesbuches von Bash (Linux) nach Powershell (Windows) übersetzen lassen:
„Here’s the PowerShell equivalent of the Bash script you posted:“
„Note that some of the functionality in the original Bash script (such as the wmctrl command) may not be available in PowerShell and would need to be replaced with alternative commands or methods.“
Leider reichen meine Powershell-Kenntnisse nicht so weit, dass ich die Qualität des Codes beurteilen könnte, aber das ist mindestens beim Lernen einer Programmiersprache eine sehr interessante Möglichkeit: Man formuliert die Befehle in einer Sprache, die man kennt, und lässt sie in die zu lernende Sprache übersetzen.
Tja. Es wäre schon nett, wenn Menschen so etwas auch könnten. Man lernt eine Programmiersprache und kann gleich alle anderen auch…