システムプログラミングを始めますか?[閉まっている]


8

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

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

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


あなたはあなたの質問を明確にすべきだと思います:あなたは何をしたいですか?OSを作成しますか?SIGOPSチュートリアルに従って、Tanenbaumの本を読んでください。Win32を学ぶ?Petzoldの本があります(なぜ誰かが強い動機なしにそれをしたいのかはわかりませんが)。デバイスドライバ?システムプログラミングはとても広い概念です。
Vitor Py 2011

何かが強い動機なしにWin32を学びたくないと言うのはなぜですか?
ライアン、

2
未加工のWin32 APIは多くの不備を持っているため、Win16 APIから来ているため、ほとんど意味がないように見えるものがたくさんあります。ほとんどのアプリケーションで最新のGUIツールキットを使用し、Win32 APIのいくつかのメソッドを呼び出すだけで、本当に必要な場合は、通常、より適切で痛みの少ないアプローチです。
Vitor Py 2011

回答:


6

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

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

K&Rは明らかにCの最も信頼できるガイドです。Windowsアプリケーションを対象とする場合は、Programming Windowsを入手することを強くお勧めします

「低レベル」のインタラクションに本当に興味がある場合は、IczeliconのWin32アセンブリチュートリアルもお勧めしますMASMは素晴らしく、無料です)。

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


Win32 APIを誰かに勧めるのは本当に難しいです。Qt、GTKmm、またはmfcなどのよりモダンで使いやすいものをターゲットにしないのはなぜですか?いくつかの仕事で学んだにもかかわらず、Win32 APIプログラミングは役に立たないようです。
Vitor Py 2011

@Victor個人的な好みの問題だと思います。私はWin32 Cで「歯を切った」ので、私はそれに個人的な懐かしいつながりを持っていると思います。現在の仕事ではあまり使用していませんが、個人プロジェクト/レクリエーション開発(主にInteropまたはCLI / C ++ラッパーなどを介して)で定期的に使用しています。OPはフレームワーク(特にMFC、良き主導...)によって提供される抽象化のレイヤーよりも望ましいので、直接Win32 Cは「金属に近い」と思います。
ブランドンモレッツ

10

Arduinoのような組み込みコントローラーで小さな組み込みプロジェクトを作成することを検討してください これは、システムプログラミングの学習プロセスを開始するのに最適な方法です。これは、基本的なレベルから始め、成長することができるためです。


「要点」回答の+1。詳細を説明して、いくつかの参照を追加できますか?
Md Mahbubur Ra​​hman 2014

ArduinoのWebサイトでは、プラットフォームとその使用方法、およびインターネットで既に利用可能なその他の多くのリソースについて詳しく説明しています。
Robert Harvey 14年

4

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

したがって、私はLinux開発に参加することをお勧めします。OSの内部について学ぶことは非常に良いコミュニティです。私は単純に従うことにより、オペレーティングシステムについての膨大な量のことを学んだのLinuxカーネルのディスカッションリストを ....

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.