<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Programmierung on kenji.blog</title><link>http://kenji.blog/de/tags/programmierung/</link><description>Recent content in Programmierung on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>de</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 12 Jul 2025 12:30:35 +0900</lastBuildDate><atom:link href="http://kenji.blog/de/tags/programmierung/index.xml" rel="self" type="application/rss+xml"/><item><title>Vor- und Nachteile der Programmerstellung mit Win32API + C++</title><link>http://kenji.blog/de/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/</link><pubDate>Sat, 12 Jul 2025 12:30:35 +0900</pubDate><guid>http://kenji.blog/de/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/</guid><description>&lt;img src="http://kenji.blog/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/img_1.png" alt="Featured image of post Vor- und Nachteile der Programmerstellung mit Win32API + C++" />&lt;h1 id="der-reiz-und-die-herausforderungen-der-entwicklung-mit-win32api--c">Der Reiz und die Herausforderungen der Entwicklung mit Win32API + C++
&lt;/h1>&lt;p>Für diejenigen, die die Windows-App-Entwicklung meistern möchten, ist &lt;strong>Win32API + C++&lt;/strong> nach wie vor eine leistungsstarke Option.
Diese Kombination, die die engstmögliche Interaktion mit dem Betriebssystem ermöglicht, bietet sowohl Geschwindigkeit als auch Flexibilität.&lt;/p>
&lt;p>Andererseits erfordert die Beherrschung Entschlossenheit, da sie sich erheblich von modernen Entwicklungsstilen unterscheidet.&lt;/p>
&lt;p>Auf dieser Seite werden wir die Vor- und Nachteile aus der &lt;strong>Perspektive eines aktiven Windows-App-Entwicklers&lt;/strong> klar erläutern.&lt;/p>
&lt;hr>
&lt;h2 id="vorteile">Vorteile
&lt;/h2>&lt;h3 id="ultraschnelle-native-ausführung">Ultraschnelle Native Ausführung
&lt;/h3>&lt;p>Da C++ und Win32API auf der Schicht operieren, die dem Betriebssystem am nächsten ist, gibt es fast keinen unnötigen Overhead.
Die CPU- und Speichernutzung ist äußerst effizient und bietet eine &lt;strong>überwältigende Ausführungsgeschwindigkeit&lt;/strong> .&lt;/p>
&lt;h3 id="hohe-flexibilität-und-freiheit">Hohe Flexibilität und Freiheit
&lt;/h3>&lt;p>Sie können das gesamte App-Verhalten &lt;strong>selbst fein steuern&lt;/strong> , wie z. B. Fenstersteuerung, asynchrone Verarbeitung, COM-Integration und Prozessverwaltung.
Es ist auch möglich, spezialisierte Tools und eigene originelle Frameworks zu erstellen.&lt;/p>
&lt;h3 id="einfach-zu-verteilen-ohne-laufzeitbedarf">Einfach zu Verteilen Ohne Laufzeitbedarf
&lt;/h3>&lt;p>Da keine externen Laufzeitumgebungen wie .NET oder Java erforderlich sind, &lt;strong>kann es als einzelne ausführbare Datei verteilt werden&lt;/strong> .
Es ist weniger anfällig für Probleme bei der Neuverteilung und lässt sich ohne Installationsprogramm leicht ausführen.&lt;/p>
&lt;h3 id="kann-leichtgewichtige-apps-erstellen">Kann Leichtgewichtige Apps Erstellen
&lt;/h3>&lt;p>Da es nur die absolut notwendige Konfiguration erfordert, ist seine Eigenschaft ein &lt;strong>sehr geringer Speicherbedarf&lt;/strong> .
Es läuft auch auf leistungsschwachen PCs oder in virtuellen Maschinenumgebungen komfortabel.&lt;/p>
&lt;h3 id="fortgeschrittene-steuerung-auf-betriebssystemebene-möglich">Fortgeschrittene Steuerung auf Betriebssystemebene Möglich
&lt;/h3>&lt;p>Sie können auch &lt;strong>Steuerungen realisieren, die mit normalen Sprachen und Bibliotheken schwierig sind&lt;/strong> , wie z. B. globale Maus- und Tastatur-Hooks, Feinabstimmung von Fensterstilen und Systemmenüoperationen.&lt;/p>
&lt;hr>
&lt;h2 id="nachteile">Nachteile
&lt;/h2>&lt;h3 id="geringe-entwicklungseffizienz">Geringe Entwicklungseffizienz
&lt;/h3>&lt;p>Selbst der Aufbau der GUI muss vollständig in Code erfolgen, und manchmal sind &lt;strong>Dutzende Zeilen Code erforderlich, nur um eine einzige Schaltfläche zu erstellen&lt;/strong> .
Das Ändern des Designs ist ebenfalls kompliziert, und die Produktivität ist im Vergleich zur Entwicklung mit UI-Frameworks geringer.&lt;/p>
&lt;h3 id="leicht-verringerte-wartbarkeit">Leicht Verringerte Wartbarkeit
&lt;/h3>&lt;p>Es gibt viele &lt;strong>Codes mit speziellen Strukturen&lt;/strong> , wie z. B. Nachrichtenschleifen und Fensterprozeduren, was die Lesbarkeit und Wiederverwendbarkeit beeinträchtigt.
Es hat auch Aspekte, die für die Teamentwicklung und die langfristige Wartung ungeeignet sind.&lt;/p>
&lt;h3 id="schwierige-unterstützung-moderner-ui">Schwierige Unterstützung Moderner UI
&lt;/h3>&lt;p>Es ist &lt;strong>schwierig, die in den letzten Jahren geforderte UX zu unterstützen&lt;/strong> , wie z. B. High-DPI-Unterstützung, Touch-Interfaces, Barrierefreiheit und Dark Mode.
Sie müssen jede manuell behandeln, was viel Mühe erfordert.&lt;/p>
&lt;h3 id="keine-plattformübergreifende-unterstützung">Keine Plattformübergreifende Unterstützung
&lt;/h3>&lt;p>Da es sich um eine vollständig Windows-exklusive API handelt, &lt;strong>kann es nicht auf macOS oder Linux portiert werden&lt;/strong> .
Wenn Sie eine plattformübergreifende Bereitstellung planen, müssen Sie andere Technologien auswählen.&lt;/p>
&lt;h3 id="extrem-hohe-lernkosten">Extrem Hohe Lernkosten
&lt;/h3>&lt;p>Sie müssen &lt;strong>Konzepte und Mechanismen verstehen, die heute selten verwendet werden&lt;/strong> , wie z. B. Handles, GDI, COM und OLE.
Viele Dokumente sind alt und erfordern Zeit und Geduld zum Lernen.&lt;/p>
&lt;hr>
&lt;h2 id="geeignete-anwendungen">Geeignete Anwendungen
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Leichtgewichtige Tools&lt;/strong> wie Datei-Launcher und Hotkey-Unterstützer&lt;/li>
&lt;li>&lt;strong>Systemdienstprogramme&lt;/strong> wie Zwischenablagenmanipulation und IME-Steuerung&lt;/li>
&lt;li>&lt;strong>Native steuerungsbasierte Apps&lt;/strong> wie globale Hooks und Fenstererfassung&lt;/li>
&lt;li>&lt;strong>Treiber-Support-Tools&lt;/strong> , die eng mit der Hardware verbunden sind&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="ungeeignete-anwendungen">Ungeeignete Anwendungen
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Allgemeine Verbraucher-Apps&lt;/strong> , bei denen moderne UI / UX wichtig sind&lt;/li>
&lt;li>&lt;strong>Prototyping und MVP-Entwicklung&lt;/strong> , die mit Blick auf Geschwindigkeit erstellt wurden&lt;/li>
&lt;li>&lt;strong>Großprojekte&lt;/strong> , die auf langfristigem Betrieb und Teamentwicklung basieren&lt;/li>
&lt;li>&lt;strong>Plattformübergreifende Produkte&lt;/strong> , die mehrere Betriebssysteme unterstützen müssen&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="bewertungszusammenfassung">Bewertungszusammenfassung
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Standpunkt&lt;/th>
&lt;th>Bewertung&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Ausführungsgeschwindigkeit&lt;/td>
&lt;td>◎ Sehr Schnell&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Speichereffizienz&lt;/td>
&lt;td>◎ Hervorragend&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Entwicklungsgeschwindigkeit&lt;/td>
&lt;td>× Langsam&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Wartbarkeit&lt;/td>
&lt;td>× Gering&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Plattformübergreifende Unterstützung&lt;/td>
&lt;td>× Nicht Unterstützt&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Moderne UI-Unterstützung&lt;/td>
&lt;td>× Schwach&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Freiheit der OS-Steuerung&lt;/td>
&lt;td>◎ Überwältigend Hoch&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="fazit">Fazit
&lt;/h2>&lt;p>&lt;strong>Win32API + C++ ist ein Werkzeug für Entwickler, die &amp;ldquo;alles im Betriebssystem selbst handhaben wollen&amp;rdquo;.&lt;/strong>
Während seine Leistung immens ist, erfordern Lernen und Betrieb eine entsprechende Entschlossenheit.&lt;/p>
&lt;blockquote>
&lt;p>Ob es sich lohnt, &amp;ldquo;mutig zu wählen&amp;rdquo;, hängt von der Art der App ab, die Sie anstreben.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>In die Welt von &lt;code>#include &amp;lt;windows.h&amp;gt;&lt;/code> einzutauchen, ohne sich auf GUI-Frameworks oder moderne Sprachen zu verlassen ――
Diese Entscheidung ist auch heute noch sinnvoll.&lt;/p></description></item><item><title>Schriftartensammlung für die Programmierung</title><link>http://kenji.blog/de/p/schriftartensammlung-fuer-die-programmierung/</link><pubDate>Sat, 30 Mar 2024 02:21:31 +0900</pubDate><guid>http://kenji.blog/de/p/schriftartensammlung-fuer-die-programmierung/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E9%9B%86/img.png" alt="Featured image of post Schriftartensammlung für die Programmierung" />&lt;h2 id="jetbrains-mono">JetBrains Mono
&lt;/h2>&lt;p>Dies ist eine Open-Source-Programmierschriftart, die von JetBrains bereitgestellt wird.&lt;/p>
&lt;p>Download: &lt;a class="link" href="https://www.jetbrains.com/ja-jp/lp/mono/" target="_blank" rel="noopener"
>https://www.jetbrains.com/ja-jp/lp/mono/&lt;/a>&lt;/p>
&lt;h2 id="hackgen">HackGen
&lt;/h2>&lt;p>Hakugen (HackGen) ist eine Programmierschriftart, die die englische Schriftart für die Programmierung Hack mit der Schriftart GenJyuu Gothic, einem Derivat von Source Han Sans, kombiniert.&lt;/p>
&lt;p>Download: &lt;a class="link" href="https://github.com/yuru7/HackGen/releases" target="_blank" rel="noopener"
>https://github.com/yuru7/HackGen/releases&lt;/a>&lt;/p>
&lt;h2 id="ricty-diminished">Ricty Diminished
&lt;/h2>&lt;p>&lt;code>Ricty Diminished&lt;/code> ist eine Schwester-Schriftart von &lt;code>Ricty&lt;/code>, die erstellt wurde, indem &lt;code>Inconsolata&lt;/code> und &lt;code>Circle M+ 1m&lt;/code> mit dem &lt;code>Ricty&lt;/code>-Generierungsskript kombiniert wurden, anstelle von &lt;code>Inconsolata&lt;/code> und &lt;code>Migu 1M&lt;/code>. Da sie die Glyphen der IPA Gothic-Schriftart nicht enthält, verfügt sie über weniger verwendbare Kanji-Glyphen, kann aber im Gegenzug unter der &lt;code>SIL Open Font License&lt;/code> verbreitet werden.&lt;/p>
&lt;p>Download: &lt;a class="link" href="https://rictyfonts.github.io/diminished" target="_blank" rel="noopener"
>https://rictyfonts.github.io/diminished&lt;/a>&lt;/p>
&lt;h2 id="cica">Cica
&lt;/h2>&lt;p>Alphanumerische Zeichen und Symbole verwenden &lt;code>Hack&lt;/code> + &lt;code>DejaVu Sans Mono&lt;/code>.
Für andere Zeichen ist es eine Programmierschriftart, die &lt;code>Rounded Mgen+&lt;/code> verwendet.&lt;/p>
&lt;p>Download: &lt;a class="link" href="https://github.com/miiton/Cica/releases" target="_blank" rel="noopener"
>https://github.com/miiton/Cica/releases&lt;/a>&lt;/p>
&lt;p>Referenz:&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://sourcefoundry.org/hack/" target="_blank" rel="noopener"
>Hack&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://dejavu-fonts.github.io/" target="_blank" rel="noopener"
>DejaVu Sans Mono&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="http://jikasei.me/font/rounded-mgenplus/" target="_blank" rel="noopener"
>Rounded Mgen+&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="migu">Migu
&lt;/h2>&lt;p>Dies ist eine kombinierte Schriftart aus M+ und IPA.&lt;/p>
&lt;p>Download: &lt;a class="link" href="https://itouhiro.github.io/mixfont-mplus-ipa/migu/" target="_blank" rel="noopener"
>https://itouhiro.github.io/mixfont-mplus-ipa/migu/&lt;/a>&lt;/p>
&lt;h2 id="osaka">Osaka
&lt;/h2>&lt;p>Es handelt sich um eine Schriftart, die es ermöglicht, die Mac OS-Standardschriftart &lt;code>Osaka&lt;/code> unter Windows zu verwenden.&lt;/p>
&lt;p>Download: &lt;a class="link" href="http://ifs.nog.cc/osakattf.hp.infoseek.co.jp/" target="_blank" rel="noopener"
>http://ifs.nog.cc/osakattf.hp.infoseek.co.jp/&lt;/a>&lt;/p>
&lt;h2 id="plemoljp">PlemolJP
&lt;/h2>&lt;p>Dies ist eine Programmierschriftart, die die Open-Source-Japanisch-Schriftart &lt;code>IBM Plex Sans JP&lt;/code>, die von IBM veröffentlicht wurde, mit &lt;code>IBM Plex Mono&lt;/code> aus der IBM Plex-Serie kombiniert.&lt;/p>
&lt;p>Download: &lt;a class="link" href="https://github.com/yuru7/PlemolJP/releases" target="_blank" rel="noopener"
>https://github.com/yuru7/PlemolJP/releases&lt;/a>&lt;/p></description></item><item><title>[Nach Sprache] Zusammenfassung der Online-Code-Ausführungsumgebungen</title><link>http://kenji.blog/de/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/</link><pubDate>Sun, 09 Apr 2023 14:01:00 +0900</pubDate><guid>http://kenji.blog/de/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/img.png" alt="Featured image of post [Nach Sprache] Zusammenfassung der Online-Code-Ausführungsumgebungen" />&lt;h2 id="python">Python
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://colab.research.google.com/#create=true" target="_blank" rel="noopener"
>Google Colaboratory&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Google Colaboratory ist eine online verfügbare Python-Ausführungsumgebung.&lt;/p>
&lt;ul>
&lt;li>Die Nutzung von GPUs ist ebenfalls möglich.&lt;/li>
&lt;li>Mit Colab-Notebooks können Sie ausführbaren Code und Rich-Text (Bilder, HTML, LaTeX usw.) in einem einzigen Dokument schreiben.&lt;/li>
&lt;/ul>
&lt;p>Es basiert auf Jupyter Notebook.&lt;/p>
&lt;h2 id="rust">Rust
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://play.rust-lang.org/?version=stable&amp;amp;mode=debug&amp;amp;edition=2021" target="_blank" rel="noopener"
>Rust Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="javascript">JavaScript
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://playcode.io/" target="_blank" rel="noopener"
>Javascript Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="java">Java
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://paiza.io/ja/projects/new?language=java" target="_blank" rel="noopener"
>paiza.IO Online Java compiler&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="haskell">Haskell
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://play.haskell.org/" target="_blank" rel="noopener"
>Haskell Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="swift">Swift
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://online.swiftplayground.run/" target="_blank" rel="noopener"
>Online Swift Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="c">C++
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://www.onlinegdb.com/online_c&amp;#43;&amp;#43;_compiler" target="_blank" rel="noopener"
>C++ 14&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="sonstiges">Sonstiges
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://aws.amazon.com/jp/cloud9/" target="_blank" rel="noopener"
>AWS Cloud9&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Eine von Amazon AWS bereitgestellte integrierte Online-Entwicklungsumgebung. Werkzeuge für über 40 Programmiersprachen wie Node.js, JavaScript, Python, PHP, Ruby, Go, C++ usw. sind vorpaketiert.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://vscode.dev/" target="_blank" rel="noopener"
>Visual Studio Code for the Web&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Eine von Microsoft bereitgestellte Online-Entwicklungsumgebung. Sprachen, die kompiliert werden müssen, können jedoch weder ausgeführt noch debuggt werden.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://paiza.io/projects/CGAcQLfW-IOXYy8Dq2OHBw?locale=ja-jp" target="_blank" rel="noopener"
>paiza.IO&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Eine Online-Ausführungsumgebung, die 24 Hauptsprachen wie C, C++, Java, Ruby, Python, PHP, Perl usw. unterstützt.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://codepen.io/" target="_blank" rel="noopener"
>CodePen&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Eine Online-Ausführungsumgebung für HTML, CSS und JavaScript.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://codeanywhere.com/" target="_blank" rel="noopener"
>codeanywhere&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Eine Online-IDE. Ermöglicht Codefreigabe und Chat.&lt;/p></description></item></channel></rss>