連載
型の哲学──静的と動的の間にあるもの 第9章:まとめと未来の型システム ここまでの章で、「型とは何か」「静的と動的の違い」「現代の型システムの進化」などを多角的に見てきました。 最終章では、その総まとめとして本記事全体を振り返りつつ、今後のプロ…
型の哲学──静的と動的の間にあるもの1章 第8章:型との向き合い方──実践的な設計指針 ここまで「型」についての思想・機能・言語的な側面を掘り下げてきましたが、本章では実際の開発現場で型とどう向き合い、どのように活用すべきか──すなわち「型の運用方…
型の哲学──静的と動的の間にあるもの 第7章:型がもたらす安心とスピードのトレードオフ ここまでの章で、静的型付け・動的型付け、それぞれの特徴と実例を確認してきました。静的型は安全性を、動的型は柔軟性を、それぞれ開発者に提供します。しかし、ソフ…
型の哲学──静的と動的の間にあるもの 第6章:現代的な型システムと“いいとこ取り”言語たち 前章までで、静的型と動的型のそれぞれの利点と課題を明らかにしてきました。今章ではその中間に立ち、静的型の安全性と動的型の柔軟性を両立しようとする、現代的な…
型の哲学──静的と動的の間にあるもの 第5章:動的型付け言語の柔軟さと危うさ 前章では静的型付け言語の特性とメリット・デメリットについて整理しました。ここではその対極にある「動的型付け(dynamic typing)」を採用した言語群──Python、JavaScript、Ru…
型の哲学──静的と動的の間にあるもの 第4章:静的型付け言語の特性と功罪 C++に限らず、「静的型付け(static typing)」を採用するプログラミング言語は数多く存在します。Java、Rust、Go、Haskell、TypeScript(厳密には静的解析)などがその代表例です。 …
型の哲学──静的と動的の間にあるもの 第3章:キャストの実践パターンと落とし穴 前章ではC++のキャスト種別とその基本的な用途を紹介しました。本章では、実際のソフトウェア開発におけるキャストの使用例と、それによって起こりうるバグや問題点を具体的に…
型の哲学──静的と動的の間にあるもの 第2章:C++におけるキャストの基礎 「型変換」は静的型付け言語において避けて通れない操作であり、特にC++では多くのキャスト手法が用意されている。C++を学び始めた人にとって、static_cast や reinterpret_cast、cons…
型の哲学──静的と動的の間にあるもの 第1章:なぜ今「型」なのか? プログラミングにおける「型」とは、変数や関数に対してどのようなデータを扱うかを定義するものである。この一見単純な概念は、ソフトウェアの安全性、可読性、保守性、パフォーマンスに多…
Smalltalkで「Hello, World!」を表示する方法【初心者向け入門ガイド】 Smalltalkは、純粋なオブジェクト指向プログラミング言語として1970年代に誕生しました。そのシンプルかつ強力な構文は、後の多くの言語(Ruby, Python, Javaなど)に大きな影響を与え…
ラダー vs ST(構造化テキスト):最新の制御プログラミングの選択と最適化
〜実践的なPLCプログラミングを学ぼう〜 第5回: IoTとPLCの連携 1. はじめに 前回の第4回: HMIとの連携とデータ可視化では、HMIを活用したデータの可視化と操作パネルの構築について学びました。 今回は、PLCとIoTの連携 に焦点を当て、クラウドとのデータ連…
Brainfuckコンパイラ自作シリーズ 第5回:最適化とエラー処理 はじめに 前回までに Brainfuck のコードを C 言語に変換し、コンパイルして実行する仕組み を実装しました。 しかし、現時点の実装では 非効率なコードが生成される ことや エラー処理が不十分 …
GoF(Gang of Four)のデザインパターン:構造パターン(Adapter, Decorator, Facade)を徹底解説 1. はじめに オブジェクト指向プログラミングにおいて、「異なるクラスをどのように組み合わせるか?」 は重要な課題です。 特に、クラス間の結合度を最小限…
GoF(Gang of Four)のデザインパターン:Factory & Builderパターンを徹底解説 1. はじめに ソフトウェア開発において、「オブジェクトの作成をどのように管理するか?」 は重要な課題です。 適切な方法を選ばなければ、コードが煩雑になり、再利用性や拡張…
Brainfuckコンパイラ自作シリーズ 第4回:Cコード生成と実行 はじめに 本記事では、BrainfuckコンパイラのCコード生成部分を実装し、BrainfuckコードをC言語に変換してコンパイル・実行するまでの流れを解説します。 前回までに 字句解析(Lexing) と 構文…
GoF(Gang of Four)とは?ソフトウェア設計を支えるデザインパターンの基礎 1. はじめに ソフトウェア開発において、「保守性が高く、再利用しやすい設計」 は重要なテーマです。 しかし、開発者が独自に設計を考えると、類似した問題に対して異なる解決策…
LOLCODEでHello Worldを出力する 1. はじめに LOLCODE は、インターネット文化(特にLOLCatsミーム)を元に作られたユーモラスなプログラミング言語 です。 文法が英語のスラングやミームのようになっており、楽しみながらプログラミングが学べる のが特徴で…
Brainfuck コンパイラの自作 第3回 - 構文解析(Parsing)の実装 1. はじめに 前回は字句解析(Lexing)を実装し、Brainfuck のコードをトークンのリストに変換しました。 今回は 構文解析(Parsing) を行い、特に [ と ] の対応関係を管理する ジャンプテ…
初めての機械学習:分類タスクを学ぶ はじめに 機械学習はデータからパターンを学び、予測や分析を行う技術です。その中でも「分類(Classification)」は、与えられたデータを事前に定めたカテゴリに分類する手法であり、メールのスパム判定や画像認識など…
Brainfuck コンパイラの自作 第1回 - 基本設計と環境構築 1. はじめに Brainfuck は、極端にシンプルな命令セットを持つ難解プログラミング言語(esolang)です。本記事では、Brainfuck のコンパイラを自作する方法を解説します。 なぜ Brainfuck コンパイラ…
〜実践的なPLCプログラミングを学ぼう〜 1. はじめに 前回の「第一回 ST言語入門techcraft.hatenablog.com」では、ST(Structured Text)言語の基本構文や変数、制御構造(条件分岐・ループ)について学びました。今回は、実践的なPLCプログラムの作成に焦点…
〜PLCプログラミングの基礎を学ぼう〜 1. はじめに:ST言語とは? ST(Structured Text)言語は、PLC(プログラマブル・ロジック・コントローラ)のプログラミング言語の一つであり、IEC 61131-3規格に準拠しています。C言語やPascalに似た構文を持ち、論理…