ここから本文です

プログラミング・コンピュータ言語について。 プログラミング・コンピュータ言語...

kin********さん

2012/7/322:17:20

プログラミング・コンピュータ言語について。
プログラミング・コンピュータ言語に詳しい方にお聞きしたいのですが、どこから習った・習い始めたんですか?(本とか色々…)
参考までに教えてください。

補足学校で習ったって、大学ですか?

閲覧数:
544
回答数:
6

違反報告

ベストアンサーに選ばれた回答

2012/7/709:19:18

TK-80のアセンブラーからです。

TK-80(Training Kit μCOM80)とは日本電気(NEC)の半導体事業部(現在のルネサス エレクトロニクス)が1976年8月3日に販売した、マイクロコンピューター(マイコン)システム開発のためのトレーニングキットです。
http://ja.wikipedia.org/wiki/TK-80

数年前から、C言語(VC,C++、C#、Objectiv Cを除く)を使って、組み込み用小型マイコンをプログラミングしています。

C言語は独学でしたが、有る程度まで覚えても、そこから一向にスキルが向上しませんでした。

書籍やサイトを見ているだけでは、どうしても超えられない部分があるのです。

それは「構造体とポインター」、「タイマーと割込」、「ヘッダーファイルとマクロ命令を使った、ファイル分割プログラミング」です。しかもこれらは、実は学校や書籍では殆ど具体的に教えていません。皆無といっても過言ではありません。

ある日、とあるサイトの8ピンPICでの気圧計用サンプルプログラムを除いて、愕然としました。
プロのプログラマーの方が趣味でPICマイコンの電子工作を紹介していたのです。

パレットソフト
http://www.palettesoft.co.jp/

コメントが的確で、そのサンプルプログラムそのものは簡潔で整然とプログラムされています。

必死になって、そのサンプルプログラムを何とか読み解き、理解するのに何日もかかりました。
どうしてもわからない部分は質問をし、そのサンプルプログラムを別のPICマイコンに移植することができるようにまでなりました。

いままで、自分が書籍やサイトで見聞きして書いたプログラミング作法とは全く異なっていました。「ああ、プロはこんな風にプログラミングするんだ」とその時初めて気が付きました。

まだまだ未熟者ながら、パレットソフトさんで教わったC言語(VC,C++、C#、Objectiv Cを除く)のプログラミング作法は、本当に役に立っています。おかげで自分の地元で少しプロのお仕事の手伝いをさせていただきました。

プロとアマチュアの差は歴然です。パレットソフトさんで、C言語のプログラミング作法をサンプルプログラムで見ていなかったら、実務のC言語ソースプログラムを理解することなど到底無理だったことでしょう。

最近ようやく「カウンタと割込処理」が理解できました。7Seg-LED4桁分を、C言語を使ってDynamic表示できるました。Delayを使わずインターバルタイマの割込で処理します。

プログラミングは、学校や書籍でいくら勉強しても有るレベル以上にはスキルの向上はしません。
現在の学校のプログラミングの授業や、書籍では、C言語を「コンピュタープログラミング言語」として教えているだけであり、残念ながら「プログラミングの作法」を教えているわけではないからです。

また、C言語のプログラソースは移植性が高いと言われていますが、それこそ「プログラミングの作法」ができていなければ、到底簡単には移植などできません。

まず、そのハードウエアに依存する部分(特に特殊設定レジスタなどの初期化部分や、I/O部分な等)と、処理のためのアルゴリズムに沿った流れの部分の2つに分けてあること。

このハードウエアに特化した部分を、はっきりメイン処理から分別し、残ったメインプログラムと、その関数部分は、他のマイコンに再利用することが簡単にできるようになるのです。

そして、C言語のプログラムを移植する際に、絶対忘れてはいけない事は、C言語間で、その使用出来る「変数の型とその型の内部表現方法」が微妙に異なっている事です。

この差をなくすために、一般的な変数の型を#defineを使って、明確にどのような内部表現で使っているか分かるように名前を付け治して使うようにする事のなのです。

「構造体とポインター」、
「タイマーと割込」、
「Delayは使用せずインターバルタイマの割込を使う」、
「ヘッダーファイルとマクロ命令を使った、ファイル分割プログラミング」、
「ハードウエアに特化する部分とそうでない部分を分離する」、
「変数の型を#defineを使って、内部表現が明確な名前に宣言しなおして使う」
こういった事は、プロの描いたプログラミングソースには、当たり前にように使われている「プログラミングの作法」なのです。

自己のスキルの壁を破り、プログラミングスキルをより向上させるのには、自分よりもプログラミングスキルの高い人に教わる以外に方法は絶対ありません。

ベストアンサー以外の回答

1〜5件/5件中

並び替え:回答日時の
新しい順
|古い順

zsu********さん

2012/7/821:41:58

小学生の頃、PC-8801とMSXのBASIC言語から学び始めました。
もう20年以上も前の、8ビット機です。

目的はゲームの自作で、低年齢層向けのプログラム入門書を真似しながら習得しました。
また、当時のゲーム雑誌には、簡単なゲームプログラムの解説コーナーがあり、それを真似する事もありました。
当時はパソコンを使うなら、プログラミングをやるのは当然と言う風潮が強く、
ゲームがメインの雑誌でも、プログラミングを扱うのは珍しい事ではなかったのです。
実際には、ごく初歩的なものしか作る事はできず、市販品には到底及ばなかったのですが。

pz_********さん

2012/7/414:24:55

最初っからPC(N○C88)を触りました。
N88ベーシックが動くやつです。
N○Cショールームに予約して、電車で行って、
2時間くらい貸してもらえたのです。

いまは、いたるところにPCがあります。
とにかく、今すぐ、やってみることが大事です。
お勧めは、ブラウザで動くJavaScriptです。
大したことが出来ないところがいいのです。
そのほうが発想する力がつきます。
そして↓こういうくだらないのを思いついて作ります。
-------------------------------------------------------
<html>
<head>
<script type="text/javascript">
var posx=0;
var posy=0;
var cblue=0;
var gpx=600;
var gpy=200;
function mygoal(ev)
{
gpx=ev.clientX;
gpy=ev.clientY;
var item =document.getElementById("item2");
item.style.left=gpx;
item.style.top=gpy;
}
function itemmove()
{
var item =document.getElementById("item1");
var dx=gpx-posx;
var dy=gpy-posy;
var ll=Math.sqrt(dx*dx+dy*dy);
if(ll > 0)
{
posx+=10*dx/ll;
posy+=10*dy/ll;
item.style.left=posx;
item.style.top=posy;
}
item.style.color='rgb(0,0,'+cblue+')';
cblue+=20;
cblue%=255;
setTimeout('itemmove()',500);
document.getElementById("mymess").innerHTML=ll;
}
function myinit()
{
var objgam = document.getElementById('myarea');
objgam.addEventListener('mousedown', mygoal, false);
var item =document.getElementById("item2");
item.style.left=gpx;
item.style.top=gpy;
itemmove();
}
</script>
</head>
<body onload="myinit()">
<div id="allwrapper" style="width:780px;margin:0px auto;padding:0px 0px;">
<div id="myarea" style="height:300px;background:#cccccc;">
<div id="item1" style="position:absolute;">不○子ちゃーん</div>
<div id="item2" style="position:absolute;color:#ff0000">ここよ!</div>
</div>
<p id="mymess">停止</p>
<p>IEは動かないよ。FireFox or Google Chrome使ってよ。</p>
</div>
</body>
</html>
-------------------------------------------------------
何回もやってるうちに、プログラムが解るようになります。

psp********さん

2012/7/323:05:13

自分は最初に学校の授業で習い始めましたよ。
けど習ったのは最初のほんの少しだけで後は全部独学です。その際には入門サイトに良くお世話になりました。
今はネットで検索かければいくらでも入門サイトが出てくるのでわざわざ本を買わなくても十分だと思います。

まぁやり方は人それぞれなので自分の思ったようにやればいいと思います。
頑張ってください。

sim********さん

編集あり2012/7/416:24:53

アセンブラからじゃ。その本は既に存在せんのう。

>学校で習ったって、大学ですか?
大学・専門学校・高専・高校でそういう学科を選べば教えてもらえるのう。
ここの回答者なら独学で学んだ人も多いじゃろう。ヤル気の問題じゃよ。
ヤル気がないと、ここで問題丸投げで質問してる質問者のようになって仕舞うわけじゃな。

ubu********さん

2012/7/322:44:20

私の場合は、Perlからでしたよー。
「しりとりゲーム」が作りたかったので。

の前に、図書館に本があったので、立ち読んだら俺にも出来るかなー?と思ったので。
何の本科は忘れましたが、初心者向けの本でしたよ。

もっというと、初心者向けの雑誌を2年くらいは定期購読していました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる