web-dev-qa-db-ja.com

システムプログラミングを始めますか?

5年前にプログラミングを発見して以来、さまざまなことを行ってきました。私は数多くのプログラミング言語とテクノロジーを学び、多くの興味深いことを試しました。コンソールとグラフィックスの両方でゲームを作成しました。デスクトップで実行されるコンソールアプリケーションとウィンドウアプリケーション、CRUD Webアプリケーション、自分の(くだらない)PHP XMLベースのフラットファイルデータベースです。さらに、私はAndroid=でモバイル開発を試しましたが、それを楽しんでいなかったので、それをやめました。最近、私のWebプロジェクトを完成させ、関数型プログラミングを今学んでいます( Haskell)。

しかし、私はこれまでシステムプログラミングに手を出したことがありません。オペレーティングシステムとやり取りする低レベルでソフトウェアを構築するという考え(それがそのために使用する正しい用語かどうかさえもわかりません)は興味深いようです。問題は、開始する方法が正確にわからないことであり、これを使って何をするかについての例がもっと必要です。

Win32 APIを学ぶことから始めるべきですか?かなりの数のコンソールアプリやゲームを作成するために使用したC++も知っていますが、数年は使用していません。それは行く方法ですか?また、Cはどうですか?夏が終わり大学が始まる前に、Cについてさらに詳しく(K&Rの本を使用して)学習する予定です。プログラミングの経歴がしっかりしている大学1年生として、良いスタートを切りたいです。

8
Ryan

オペレーティングシステムとやり取りする低レベルでソフトウェアを構築するという考え(それがそのために使用する正しい用語かどうかさえわかりません)は興味深いようです。

システムプログラミングアプリケーション開発 と混同されていると思います。システムプログラミングは、オペレーティングシステムとの対話ではなく、オペレーティングシステムの書き込みに沿ったものになります。おそらく、通常のアプリケーション開発(Windowsでは WinAPI )から始めて、興味深いサブシステムの探索に移ることをお勧めします。

K&Rは明らかにCの決定的なガイドです。Windowsアプリケーションをターゲットにする場合は、 Programming Windows のコピーを入手することを強くお勧めします。

「低レベル」のインタラクションに本当に興味がある場合は、 IczeliconのWin32アセンブリ チュートリアル( [〜#〜] masm [〜#〜] もお勧めです。そしてそれは無料です)。

大学一年の前にその情報のほんの一部さえも把握できれば、おそらく他の誰よりも数年先になるでしょう。

6
Brandon Moretz

Arduino。 のような組み込みコントローラーで小さな組み込みプロジェクトを作成することを検討してください。これは、システムプログラミングの学習プロセスを開始するための優れた方法です。それ。

10
Robert Harvey

システムプログラミングに興味がある場合、オペレーティングシステム(OSカーネルのコアまたは関連するデバイスドライバーのいずれか)で実際に作業することに勝るものはありません。

したがって、私はLinux開発に参加することをお勧めします。OSの内部について学ぶのはとても良いコミュニティです。 linux-kernelディスカッションリスト ....に従うだけで、オペレーティングシステムについて多くのことを学びました。

また、具体的なプロジェクトに取り組み、スキルを向上させる機会でもあります。ソフトウェア開発者の採用担当者として、私は誰かがオープンソースプロジェクトに貢献したときに本当の注意を払います。これは、ほとんど常にスキルとコミットメントの前向きな指標です!

4
mikera