
Ubuntu日本語フォーラム

ログインしていません。
このubuntuについての質問という関連に外れているかも知れませんが、質問させてください。
みなさんの中で今現在、ubuntuについてとても詳しい方々は、初心者の頃、どのようなことを勉強していましたか?
また、自分は今、プログラミング言語(C#)を勉強していますがubuntuやLinux系を開発するのによく使う言語は何ですか?覚えておいた方がいい言語は何ですか?
そして、最後に皆さんが参考にしてきた本などがあれば教えてもらえませんか?
長くなりましたがお答えしてもらえれば幸いです。
オフライン
プログラムについては、「状況に応じて様々な言語を使い分けるとよい」が答えですが、一応CやC++が最も使われると思います。
UbuntuやLinuxに限りませんが、最も使うプログラム言語はC言語です。LinuxカーネルはC言語で開発されていますし、UbuntuにはgccというC言語のコンパイラや、geditの色分け機能がついているので、簡単にプログラムを組めます。
コンパイルは、端末から
gcc -O2 ./main.c -o ./testprogram
のようにします。GCCのコンパイルオプションを調べてみるといいでしょう。
自分の場合、C言語の知識はハードウェア系のプログラム関連の本で習得しました。
C言語以外にもbashやpythonも良く使われます。(他のOSではあまり聞きなれないかもしれません)
geditは様々なプログラムの色分けに対応しているので、C以外のプログラム作成にも便利です。
簡単にクロスプラットフォームのプログラムを組みたいのであれば、Javaがいいでしょう。C言語でも、OS依存のライブラリを使わなければ、クロスプラットフォームで組めます。
sankeiさんのC#の知識を生かしたいなら、MonoというC#の互換ライブラリがあります。(Windows用C#プログラムは動きません)
(FSFのリチャード・ストールマンさんはC#に反対しているようです… 後々ライセンス問題で面倒になるとか。同じ論法でJavaも反対でしょう)
Web開発をしたいなら、PHPやJavaScriptでしょうか。
プログラム言語を覚えるとき、関数名等はうろ覚えでいいと思います。そういうものはインターネットで調べればいくらでも出てくるからです。
人によって意見は違うかもしれませんが、自分の感想では、C言語、Java、PHPは文法が似ていると思います。行末はセミコロンで終わりますし、中括弧でブロック化できます。
if文やfor文、条件式も似ています。
この辺なら簡単に移行できるでしょう。
Ubuntuについて詳しいわけではありませんが、自分はほとんどの情報をインターネットから得ます。
Linux全般ではなくUbuntuのみの情報ですが、最近は「Ubuntu Magazine」シリーズを買っています。
プログラムの知識は、ハードウェア系のプログラムの本(PICとか電子部品関係)やインターネットから得ました。
あとは補足ですが、プログラムを組む上で数学やその他の分野の知識があると、組めるプログラムの幅が広がると思います!
まとまりの無い話となってしまいました。
オフライン
あらら、すみません。
内容が一部重複していますが、気にしないでください;;
オフライン
sankeiさん による投稿:
みなさんの中で今現在、ubuntuについてとても詳しい方々は、初心者の頃、どのようなことを勉強していましたか?
そういう書き方をすると誰しも答え辛くなるような気がします(笑)
私は詳しくは無いですが、一応、経験談だけ。
Linuxは学生の時分にC言語環境とLaTeX環境が欲しくて使い始めました。慣れ始めると他にもやりたいことがでてきたので、随時、fj(ネットニュース)などで人にいろいろ聞いてみたり、ネットで検索したりしながら覚えました。特になにを勉強するというでもなく、やりたいことがでてきたら随時調べるという感じならば、時間はかかりますが、無理なく自分に必要な知識が身につくかと思います。
sakeiさん による投稿:
ubuntuやLinux系を開発するのによく使う言語は何ですか?覚えておいた方がいい言語は何ですか?
代表はC言語とC++ではないでしょうか。
最近はmonoによるC#もあるかも知れません。
ちょっとしたツール類を中心に、PerlやPythonで書かれているものも多くあります。
スピード重視であればC言語やC++やC#が良いかと思います。
スピードがあまり問題にならないプログラムであれば、PerlやPythonが便利です。
このあたりは、
https://forums.ubuntulinux.jp/viewtopic.php?id=6891
でも話題になりましたが、結局はどんなプログラムが書きたいかによるので一概には言えないところでもあります。
本は何冊か読んだり、図書館で借りたりしましたが、特にお勧めというのはありません。強いていうならUNIXコマンドポケットリファレンスや、Linuxコマンドポケットリファレンスにざっくり目を通しておくと、Linuxの強力なコマンドラインツールに慣れ親しむきっかけになるかも。
とりあえず、真っ先に、端末を開いてmanコマンドを覚えてください。
$ man man
オフライン
sankei による投稿:
ubuntuやLinux系を開発するのによく使う言語は何ですか?覚えておいた方がいい言語は何ですか?
開発というのとはちょっと違いますが、、、
正直言って僕がLinuxを使っていて一番「覚えてよかった!」と思う言語はシェルスクリプトです。
まあ、その言語で何をするかによりますよね。当然ですけど。
オフライン
Linuxでなにかやる必要が出てきた場合、だいたいシェルスクリプトで作成することが多いです(/bin/sh をよく使います)。
それよりも複雑なことをする場合は、大抵、ベースとなるプログラムが存在することが多いので、その言語にあわせます(PerlならPerl、Pythonならpython、CならC・・・)
ベースとなるものが無く、シェルスクリプトでやるには複雑なことをするとしたら、C(と標準ライブラリ)を選択すると思います(単に個人的に慣れているため。)
# さらに複雑になりそうなら、おそらく、(OOPができる)Javaを使用します。Windows上で動作を確認してから持ってゆくことも簡単ですし。
おそらくは、Perl/Python/Rubyといった、汎用性のあるスクリプト言語を使用するのが便利な気はしています(CやJavaではなく)が、なれた言語の方が便利 ということで・・・
※どちらにしても、「多数のプラットフォームで動かせる言語(ソースでもバイナリでも出来れば可)」が便利ですね。
作る場合だけに限定せずに考えるなら、シェルスクリプトは絶対に知っておいた方が良いです。Linux/Unixの標準的なコマンドや機能は、結構多くの部分がシェルスクリプトで組まれているものがあります(MS-Windowsと違い、拡張子で区別(.batと.exe みたいな)が付かないので気が付きづらいですが・・・)
# あとは、Pythonも微妙に多い気がします。Ruby/Perlはこの分野では少ないような気が。
なお、Ubuntuを覚えた・・・というかUbuntuを触り始めてから覚えた(調べた)のは、Grub周りとudev周りぐらいしかなく、それ以外のLinuxのコマンドやらファイルシステムやらという普通に使う分部は、それ以前に知っていたという感じです。
# grubもudevも、普通に使う分には意識する必要もほとんど無い・・・
それ以前の知識の、Linux・・・というか、Unix関連は、UnixといえばWS(Workstation)というころ、UNIX SYSTEM V/386のマニュアルを購入して読んだり(そして、実務で使って)して覚えました(書籍もほとんど無く、雑誌は皆無だったような気が)。今でも、紙で参照できるマニュアルとしてずっと使っています(高かったし・・・)
オフライン
sankeiさんは学生さんとかでしょうか?
Ubuntu/Linuxは趣味の範囲で触っている程度なのでおこがましいですが、自分ではコードを書かない立場になってしまった職業人(Windows専門ですが)として一言。
どれでも良いので一つの言語を自由に使えるまでに極めてみてください。
極端な話ですが言語間の違いというのは方言みたいなもので、一つのものを覚えてしまうと他のものを使うことになった場合でも、大した苦労もなく覚える・理解することができます。
どの言語にも、できることに得手・不得手があるので、やりたいことによって言語を使い分けたりします。
プログラミング言語というのは「手段」であって、「目的」ではないのです。
sankeiさんが職業人を目指したいのであれば、より低級側に近い言語 C/C++ を覚えるのが良いでしょう。
C#/javaではオブラートに包まれてしまっている部分があり、たとえC#/javaをやるにしても知っておいたほうが点がたくさん含まれています。
趣味で覚えたいという程度であれば、C#なりjavaを覚えてからC/C++をやっても問題はないです。
プログラミングを覚えたいということであれば、一つのアプリを最初から最後まで完成させる入門書系の本を1冊を完遂して、後は自分が興味のある何かを作ってみる(いくつも!)。
個人的にはあまりお勧めしたくありませんが逆引き系のリファレンス本も持っているといいかもしれません。
プログラミングを覚えるには本を読むより作れ!デス。
一通りできるようになったら、Code Craft(オススメ), Code Quality, Code Completeあたりを読むとよいかもしれません。
この辺りの本は初心者が読んでもちんぷんかんぷんだと思うので、自分でプログラムが作れるようになってから読んだほうが良いです。
オフライン
皆さん、たくさんの意見ありがとうございます。自分はこれからC/C++から勉強し直していきたいと思います。
そのため、開発環境をubuntuに入れようと思っているのですが、何がいいですか?
オフライン
有名どころではeclipseでしょうか。
GUIにQt4を使うならQtCreatorもよいかも知れません。
gtkならAnjutaとかいうのがあるらしいですが、これは私は使ったことが無いのでよく判りません。
開発環境については、開発環境カテゴリの中を一読いただけるとよいかと思います。
オフライン
自分は「Anjuta」という統合開発環境をよく使います。Synapticから導入できます。
プログラムは小5の時に始めました。
「ロボカップ Jr」という、自律型ロボットのサッカーゲームがあるのですが、それに参加したことがきっかけとなりプログラムを始めました。
これは開発環境の自由度が高いと思います。
あと、工業高等学校長協会主催の「マイコンカーラリー」という、ライントレースのタイムを競う大会もあります。普通科の高校生も出場できるので(ほとんど工業高校の人ですが)、高校生になったら参加してみてはどうでしょう。一般の部では社会人も参加できます。
他にも様々な大会があります。
プログラムの腕を上げるのに、プログラムやロボットの大会に参加してみるのもいいかもしれません。
大会などの情報は、科学(理科)の先生や数学科の先生に聞いてみるといいです。
オフライン
分かりました。ある程度のレベルになったら大会にも挑戦したいと思います。
皆さん、ありがとうございました。これから、いろいろチャレンジしたいと思います。
オフライン