
Ubuntu日本語フォーラム

ログインしていません。
ubuntu上で小規模なプログラムを作るのに適したプログラミング言語で、お勧めなものはありますか?
ここで言う「小規模」とは、ソース・リストの大きさが、コメント文や、ソースを見やすくするための空行を含めて、大きくても500行以内くらいです。
このサイトを見ている方の中で知っている人はほとんどいないと思いますが、昔の8bitパソコンの時代に、その当時のパソコン雑誌にアマチュアが投稿した2,3ページにわたる自作プログラム規模くらいです。
尚、勝手ながらC言語とPythonは対象外でお願いします。
また、複数のプログラミング言語を同時進行で学習するのは、昔からいけないと言われているので、何か決定版的なものに絞込みたいのですが、「これだ」と言えるようなものをご存知の方は、教えていただけると幸いです。
厚かましいお願いですが、よろしくお願いします。
オフライン
言語を学習するのが目的なのでしょうか?
それとも「何か作りたいもの」があるのでしょうか?
後者なら、具体的になにをしたいかを明かにすれば、それに沿ったアドバイスが識者から出てくるかもしれません。
オフライン
無いかも知れない、、、
大規模なヘッダファイルを細分化して使用する機能を最初に読み込みます、それでも細分化されたヘッダファイルは大きくて実際に呼び出すのは一部の機能だけですが、余分なものを切り詰めて細かくincludeさせると面倒くさいし逆に大変。
それに一つ覚えれば結構、通じる物があるので皆同じとも言えるかも。
その中で選択する場合はやはりyamaさんの仰る通り、もう少し具体的な内容が有れば良さそうです。
Ubuntu上でC言語とPythonは対象外となると、java?
オフライン
できれば何故pythonとC言語を除外するのか理由をお聞かせ願いたく。
と、言いますのも、その限定が無ければ私ならpythonをお勧めするからです。
ubuntuシステムに標準でインストールされていますし、pythonの標準ライブラリが充実しているので、小規模なプログラムを書くのにも適しています。オブジェクト指向なので、そこから大きく育てていくのも無理無くできるかと思います。
次点はperl、rubyでしょうか。
目的にもよるかも知れませんが。。
オフライン
何を作るのかによりけりですが、Cとpythonを除外してしまうなら、MonoでC#が簡単かも。
MonoDevelopが比較的使いやすいのと、GTKSharpが統合されて、Windows環境並にGUIが作りやすくなってますし。
ワタクシ的には、hmatsueさんと同意見でpythonがいいのではないかな、と思いますが。
#GUIアプリケーションでも、Gladeで比較的ラクに作成できますし。
IDEのいいのがあれば、Java、rubyなんてのもいいかも知れませんが、rubyは経験がないので、なんとも。(^^;
オフライン
どんな言語でも、大抵のことはできます。何の前提もなく、「これだ」というような決定的な言語は、おそらく存在しません。もし、存在するなら、他の言語が淘汰されています。
なので、「目的に合わせて多数の言語を使う」(適した言語を使うので実装が楽。言語自体も広く浅く覚える)か、「1つの汎用的な言語を駆使してどんな目的でも使う」(覚えるのは1つで済むので楽。言語自体も深く覚える)かの、いずれかです。
前者のデメリットは、多数の言語を覚えるの大変なのと似た仕様に対して言語間で混乱すること。後者のデメリットは、ここの実装は楽ではなかったり、トリッキーな手段が必要だったり、選択した言語によっては、実装不可能な可能性もあること(将来、やりたいことがわかっているのではない限り、事前に予測するのは困難)
1つに絞るなら、Pythonがおすすめですが、なぜか除外されてますし。CとPythonを除外している理由がわからないので、どこまでがその範囲に含まれるのかわかりません。
・Pythonがだめなので、Jythonはいかがですか。
・Mac 系のアプリの開発にも使われている、Objective-Cはいかがですか。言語としては面白いです。
・Javaも大抵のことはできます。また、資料も豊富です。が、「簡単なことをする」には、あまり向いていませんが、便利な人には便利。
# なお、C言語=Cに似た言語 とすると、大半の言語は除外されます(Perlも入るかも)。それもあるので、除外する言語を列挙するより理由を書いたほうが簡単です。
あとは、だいたい、
・スクリプト言語にするのか、コンパイラ言語にするのか。
・プラットフォームはどうするのか?マルチプラットフォームやクロスプラットフォームを考えているのか。配布する可能性があるのか。
・I/Oメインか、CPUパワーメインか。もしくは、テキストファイル操作がメインか。逆にOSのシステムコール(API)の呼び出しが必須になりそうか。
あたりで、決まってくるのではないかと思います。
オフライン
「pythonがいいのでは」と言うと、「C言語でもいいのでは」となってしまいますね。
初期状態でCの開発環境が整ってしまっていますし、汎用性もあるので。
目的に適した言語で組めるように、様々な言語を習得された方がいいと思います。
どのプログラム言語も基本的な考え方は同じで、論理的思考力をどれだけ身につけたかがプログラムの習得に影響すると思います。
自分が小規模なプログラムを組むときは、CかJavaです。
大きめの開発には「Anjuta」という統合開発環境を使いますが、小規模開発のときはgeditの色分け機能だけを使っています。
オフライン
電卓とメモ用紙を持ち出して、いちいち計算するくらいなら、短いプログラムを作っておいて、数値だけを放り込めばいいというのが、第一の目的です。
Cを除外したのは、文字列の処理が苦手だからです。
Pythonは解説書を見たのですが、さっぱり理解できませんでした。読んだ本が悪かったのかも・・・
オフライン
Z80Bさん このCPUをハンドル名にされているとすると私と同世代かなと推察します。
私も自称アマチュア・プログラマです。Intelの初期CPUのハンド・アセンブラからスタートしました。
マサーボードから自作したのは、遠い過去の話です。
OSもCP/M80,CP/M86,MS-DOS,OS-9,OS/2,Windows....と全て、さわってきました。
昔は、よくAssemblerで組んでいましたが、Turbo Pascal, Turbo C, Borland C++, その他Microsoft のC関連など
で、小さなユーティリティ・プログラムを作っては遊んでいました。これらのマニュアルは、20cmほどある英文でした。
周りにプログラムを組む友達がいなく、教えてくれる友人もいなかったので苦労しました。
その後、インターネットが普及し、共同で作成するなど、仲間が増えて楽しくなりました。
そこで、Ubuntuでのプログラムですが、過去を捨てて勉強することをお勧めします。
統合環境で開発するのが、ある程度自動で書いてくれるので、ややこしい書式を覚える必要がないし簡単です。
Eclipseはちょっと敷居が高いので、NetBeans IDEでのJavaかC++を勧めます。
また、KDEの開発にも利用されている中身はC++ですが、Qt Creatorなどもお勧めです。
オフライン
> Z80Bさん
その目的であれば、gnu octaveなども選択肢に入らないでしょうか。
オフライン
マウス操作を必要としないなら何でも有りっぽいですね。
オープンオフィスを活用すると言うのは無しで、プログラムを書きたいと言う事でしたらZ80Bさんはもう出来ていると思いますけど。
[整数or実数の変数を用意] -> [キーボードからの入力] -> [変数に代入]
[(変数)四則演算or関数(変数)] -> [結果を変数に代入] -> [画面に出力]
後はプログラムの要素を加えて複雑な処理を必要に応じて書き込んでいけば良いかな。
一つ覚えれば言語が変わっても同じで、違うのは選言の仕方や関数の名前、書式(細部はかなり違うかも)でネット上の入門辺りを読むと何とかなるものです(浅い部分は)。
ネット上を調べると以下の感じです、分かりやすそうなのが有るでしょうか。
c
#include <stdio.h>
void main(){
int seisu1,seisu2,kotae;
printf("整数を入力:");
scanf("%d",&seisu1);
printf("\n 整数を入力:");
scanf("%d",&seisu2);
kotae = seisu1 + seisu2
printf("入力した和は %d \n", kotae);
}
java
// Keyboardを使った例
public class tasizan {
public static void main(String[] args) {
int seisu1;
int seisu2;
int kotae;
System.out.print("整数を入力: ");
seisu1 = Keyboard.intValue();
System.out.print("整数を入力: ");
seisu2 = Keyboard.intValue();
kotae = seisu1 + seisu2;
System.out.print("入力した和は ");
System.out.print(kotae);
}
}
Python
seisu1 = 0;
seisu2 = 0;
kotae = 0;
seisu1 = raw_input("整数を入力")
seisu2 = raw_input("整数を入力")
kotae = int(seisu1) + int(seisu2)
print ("入力した和は", kotae)
kylix
{$APPTYPE CONSOLE}
var
seisu1 : integer;
seisu2 : integer;
kotae : integer;
s : string;
begin
s := '整数を入力'
writeln( s )
readln( seisuu1 )
writeln( s )
readln( seisuu2 )
s := '整数の和は'
kotae := seisu1 + seisu2
writeln( s,kotae )
end.
間違ってる箇所が有ればスルーしてくださいm(__)m 流れと雰囲気を見てもらうのが目的です。
選言の仕方や細かい所の違いは実際に調べて見てください。
kylixはもう配布されていないかもしれませんが、一行ずつ意味の分かりやすい書き方の言語の例として書きました。
シェルスクリプトでも同等の事が行なえますが数値の計算では弱そう?
(インデックス一番下に移動されそう)
オフライン
Z80B による投稿:
電卓とメモ用紙を持ち出して、いちいち計算するくらいなら、短いプログラムを作っておいて、数値だけを放り込めばいいというのが、第一の目的です。
この目的にもっとも簡単にアプローチできるのは、Forth 言語による、逆ポーランド記法電卓プログラムでしょう。
特徴は、スタック言語で、文字列解析不要で、電卓プログラムが書けること。
(簡単な計算なら、プログラム不要、インタープリタを立ち上げ計算式を入力するだけ)
普通の記法:
1+1=2 ー> 中間記法
逆ポーランド記法
1 1 +
前置記法(例 Lisp)
(+ 1 1)
前置記法の Lisp/Scheme は、数学脳が無いと理解が進みませんが(私は挫折しました)、Forth は実務から生まれた言語なので、それほど理解するのは難しくないと思います。
Ubuntuには、複数のForth 実装が用意されていると思いますが、gforth が普通かな?
また、検索すれば、逆ポーランド記法電卓プログラムのサンプルがネット上に有ると思います。
オフライン
Z80B による投稿:
電卓とメモ用紙を持ち出して、いちいち計算するくらいなら、短いプログラムを作っておいて、数値だけを放り込めばいいというのが、第一の目的です。
計算だけなら bc コマンドではダメですかね?
bc だと役不足なのかな‥?
オフライン
こんにちは。
Z80B による投稿:
電卓とメモ用紙を持ち出して、いちいち計算するくらいなら、短いプログラムを作っておいて、数値だけを放り込めばいいというのが、第一の目的です。
Cを除外したのは、文字列の処理が苦手だからです。
Pythonは解説書を見たのですが、さっぱり理解できませんでした。読んだ本が悪かったのかも・・・
おそらく、第1の目的の範囲(文字列は入出力程度で、内部は数値演算が主)なら、Cでも大丈夫です。文字列の操作は大変ですが、文字列を加工しない分には、なんとかなります。
もし、文字列の操作もあるのであれば、たしかに、C言語は大変です。その場合、以下の3大汎用スクリプト(?)のいずれかがよいかなぁ と思うところです。
・Perl
老舗。日本語でも英語でも情報は豊富。ただし、マルチバイト圏では、素直に扱えないので注意。書籍もあまた存在する。
# 情報が豊富な分、間違ったTips(理由が不明で前提がなく、場当たり的な対策/回避策をもっともらしく掲載しているサイト)なども多数存在します。それらを見分ける力は必要かも。
・Python
英語での情報は豊富。日本語での情報が少ない。Linux(Ubuntu)でもだいぶ利用されている(Wubiのインストーラとか)。内部コードがUnicodeであることと、文字列が属性としてエンコードの情報を持つことから、ちゃんと意識して管理すると、マルチバイトでもなんでも大丈夫・・・かもしれない。日本語の書籍は少ない。
・Ruby
日本発でマルチバイト文字の扱いが簡単。日本語の情報はそこそこあるものの、(それで不足しても)英語の情報が少ない。学ぶには書籍がメインになるかも。
なお、私の場合、対話的に使用するものは、php(+Apache)で大体処理しています。入力欄の作成と結果の整形出力が簡単・・・
# ファイルやディレクトリを一括で処理するものは、MS-ExcelのVBA。ただし、より複雑な処理にはJavaだったり、逆に、実行速度が不足した場合にはC(や、Lazarus)だったり。
オフライン
siさんのおっしゃる通り、逆ポーランド記法のForthが最有力のようです。
Synapticパッケージ・マネージャーで検索したところ、38個のパッケージが出てきましたが、どれをインストールすればいいのでしょうか?
オフライン
>どれをインストールすればいいのでしょうか?
gforthでいいんじゃないかな?
Forth言語は、小さいし、ダメなら次を試せば良い。
$ sudo apt-get install gforth
$ gforth
Gforth 0.7.0, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
1 1 + . 2 ok
3 5 * . 15 ok
bye
# ”.” は、スタックトップをポップして、表示するコマンドです
オフライン