TechCraft – エンジニアのためのスキルアップメモ

エンジニアのスキルアップを少しでも加速する技術ブログ

C言語

構造体 vs クラス:プログラミング言語の違いと設計

構造体とクラスの違いとは?主要言語ごとの比較と設計の考え方 1. はじめに プログラミングにおいて、データをまとめて扱うための手段として「構造体(struct)」と「クラス(class)」があります。これらは、データの集まりを表現するための型ですが、言語…

mutexの基本:排他制御の仕組みとプログラムでの使い方

mutexの基本:排他制御の仕組みとプログラムでの使い方 1. はじめに マルチスレッドプログラミングにおいて、複数のスレッドが同時に共有リソースにアクセスすると、データの整合性が損なわれる可能性があります。これを防ぐために使用されるのがmutex(ミュ…

プログラムのエントリーポイントとは?

Entrypointとは何か?一般プログラムにおける汎用的な意味と役割 1. はじめに プログラムを実行する際、最初にどこから処理が始まるのかを明確にする必要があります。この「最初に実行される場所」を指すのがエントリーポイント(Entrypoint)です。エントリ…

I/O割り込み入門:組み込みシステムの効率的な処理方法

組み込みシステムにおけるC言語のI/O割り込み入門:仕組みと実装パターン 組み込みシステムの開発では、外部からの入力(スイッチ、センサー、通信など)に即座に反応する必要があります。こうしたイベントに効率よく対応する仕組みとして、I/O割り込み(Inp…

メモリ管理の基礎:CとC++の動的メモリ確保

CとC++における動的メモリ確保の違い:基礎から理解するメモリ管理 CとC++はいずれも高パフォーマンスな低レベル言語ですが、メモリ管理の方法には明確な違いがあります。この記事では、中級者向けにCとC++における動的メモリ確保の方法とその使い分け、そし…

リファクタリングの基本:C言語でのコード改善

C言語での簡単なリファクタリング:読みやすく、保守しやすいコードを書くために C言語は、システムプログラミングや組み込み開発の分野で根強い人気がありますが、構文がシンプルな分だけ、可読性や保守性の悪いコードが生まれやすい言語でもあります。この…

スキルと将来像を考える初心者向けプログラミング入門

初心者はどのプログラミングから始めるべきか?──将来のキャリアと今の自分から選ぶ最適言語ガイド 1. はじめに 「どのプログラミング言語から勉強すればいいの?」 これは、すべての初心者が最初にぶつかる疑問です。 結論から言えば、“正解は人によって違…

ST入門ガイド:C開発者が陥りやすい落とし穴とは?

C言語開発者がST(Structured Text)に挑戦するときに知っておくべき5つの違い 1. はじめに 「Cで制御やってきたから、STも余裕でしょ?」 ……と思ってST(Structured Text)に足を踏み入れたC言語経験者が、思わぬ落とし穴にはまるケースが多数あります。 ST…

リンカ Linkerとはなにか? C言語での利用

リンカ(Linker)とは何か?– C言語で学ぶコンパイルの最終工程 1. はじめに C言語などのネイティブ言語で開発をしていると、ビルド工程で「リンクエラー」や「未定義のシンボル」などのワードに遭遇します。 これらはすべてリンカ(Linker)という仕組みに…

Valgrind C/C++で使えるメモリデバッガ

Valgrind(バルグリンド)とは?– C/C++開発者必須のメモリデバッグツール解説 1. はじめに CやC++など、メモリ管理を手動で行う言語では、メモリリークやアクセス違反、未初期化変数などが原因で、予測不能なバグが発生しがちです。 それらを効率的かつ網羅…

C言語でHello World 普通と違うHelloWorldを作ろう!

C言語で「特殊なHello World」 – 文字列を書かずに出力してみよう 1. はじめに C言語で最初に学ぶのは「Hello, World!」の出力。 通常は以下のようなコードで表示します: #include <stdio.h> int main() { printf("Hello, World!\n"); return 0; } しかし、この記事</stdio.h>…

Brainfuckコンパイラ自作シリーズ 第5回

Brainfuckコンパイラ自作シリーズ 第5回:最適化とエラー処理 はじめに 前回までに Brainfuck のコードを C 言語に変換し、コンパイルして実行する仕組み を実装しました。 しかし、現時点の実装では 非効率なコードが生成される ことや エラー処理が不十分 …

コンパイル型言語とは?

コンパイル型言語とは?仕組みと特徴、代表的な言語を解説 1. はじめに コンパイル型言語 とは、プログラムを実行する前に、ソースコードを機械語に変換(コンパイル)する言語 のことです。 C言語やGo言語などがこれに該当し、実行速度が速く、パフォーマン…

PLC制御の最適解?ST言語のスキャンタイム・インターロック・割り込み処理の実態

ST言語とC、Java、Pythonの技術的な違い 1. ST言語の動作特性 (1) メインループがデフォルト ST言語には main 関数のようなエントリポイントがなく、PLCのスキャンサイクルによってループ動作を繰り返す。 入力 → 処理 → 出力 の順に処理され、次のサイクル…

C言語でHello, World! を表示する方法

# C言語でHello, World! を表示する方法 ## はじめにC言語は歴史が長く、多くのプログラミング言語の基盤となっています。本記事では、C言語の基本中の基本である`Hello, World!`プログラムを作成し、その実行方法について説明します。 --- ## 1. C言語のHel…

C言語で円周率 モンテカルロ法

C言語でモンテカルロ法を用いた円周率の計算 はじめに 円周率(π)は数学や物理学、工学で重要な定数です。πの計算方法にはさまざまな手法がありますが、本記事では モンテカルロ法 を使って円周率を求める方法をC言語で実装します。 モンテカルロ法とは? …