ページ 1 / 1
入門サイトとプログラマーについて
Posted: 2014年12月11日(木) 16:01
by ptolemy
どうもお久しぶりです。
私は、C言語を1年くらいしか触れていませんが最近、復習したいなと思いました。
そこで基本を復習するためにおすすめのサイトを教えてもらえたらなって思って質問します。
なぜこれだけのことを質問しようかと思ったり理由は、
私は最初
苦しんで覚えるC言語というサイトで勉強したんですが、
内容的にこちらのページは十分ですか?
以前、C++の入門サイトを提示したところ「そのサイトよりこちらのサイトの方がいい」
という回答をいただいたのでもしかしたら、私が勉強したサイトは不十分なのかと心配になりました。
さらに質問があります。
プロとアマチュアの違いを教えてください。
また、プログラマーの定義ってなんですか?
職業にしてる場合がプログラマーならフリーで趣味でやってる人はどれだけスキルがあっても
プログラマーにならないのかといつも疑問に思います。
質問が3つと多いですがよろしくお願いします。
Re: 入門サイトとプログラマーについて
Posted: 2014年12月11日(木) 20:14
by softya(ソフト屋)
質問1: 何の基本でしょうか? 苦Cで足らないってことは何でしょうか? 書き出してみてくださいね。
他の入門サイトや書籍でもカバーしきれない問題かもしれません。
入門は入門ですので、プログラム設計や書き方のテクニック、アルゴリズム等は網羅されていません。
全ての文法を説明しているわけでもないです。ただ、日常的に組むのに支障ない程度の知識は得られるはずです。
質問2?:
> 以前、C++の入門サイトを提示したところ「そのサイトよりこちらのサイトの方がいい」
> という回答をいただいたのでもしかしたら、私が勉強したサイトは不十分なのかと心配になりました。
苦Cとの繋がりが申し訳ないですがわかりません。
ただ、サイトの情報は不十分であることは十分考えられます。というか書籍でも不十分です。
JISの規格書なら完璧ですが、逆に仕様を的確に読み取ることは非常に難易度が高い上に日常使わないことまで書いてあるので忘れることも多数出てきます。
C++となると膨大で完璧に把握している人などまずいません。
「本の虫」 C++に詳しい人で日本人だとC++標準化委員会のエキスパートメンバーで有名なこの人だとか。
http://cpplover.blogspot.jp/
上を見ると、そのぐらい難しいって事です。
質問3:プロとアマチュアの違いを教えてください。
はっきり言えば無いです。医者のように資格が必要な職業ではないので自分でプログラマーと宣言すればそれでプログラマーです。
仕事している=プロより優秀なアマチュアもいますよ。
例えば料理人もそうですが、店で客に料理を振る舞えばプロの料理人です。
調理師免許も必須ではないので、プロとアマチュアの境目は広いです。
バイトで入って料理している人も沢山いると思いますが、客から見れば料理人なのです。
プログラマーとは、その程度の曖昧なものです。
Re: 入門サイトとプログラマーについて
Posted: 2014年12月11日(木) 23:00
by taketoshi
プログラマ(programmer)とは、コンピューターのプログラムを作成する人全般を指す(wikiより抜粋)
アマチュアでも仕事でもプログラムを組む人はプログラマーです。
概念としては車を運転する人の事をドライバーと呼ぶのと変わりありません。
タクシーの運転手だろうが、自家用車を運転する人だろうが呼称はドライバーです。
私は数本のソフトウェアを世に出していますが
アマチュアなのでプロとは違い一銭の銭も受け取ったことは無いクチです。
あくまで趣味とし、これで食べていく気がありません。
本業に有利に進めるためのスキルとしてプログラム技術を学んでいます。
おすすめサイトはこちらに成ります
猫C
http://www.kumei.ne.jp/c_lang/
プログラム言語など人が作り出した道具に過ぎません。所詮はカンナとかトンカチと同じです。
言語を一通り習得した後、何が出来るのか解らず方向性を見失った様に見受けられます。
私もそんな時期がありました。
作りたいものが見つかると良いですね。
Re: 入門サイトとプログラマーについて
Posted: 2014年12月11日(木) 23:11
by softya(ソフト屋)
ちょっと心配になったので補足です。
C++とC言語は違う言語でC言語からある時期に枝分かれして生まれたのがC++です。
C++はCをインクリメントした言語ということでC言語にオブジェクト指向の考えが取り入れられたためclassなど機能が大幅に拡張された言語となっています。
で、違う入門サイトを見ると新たなる発見も有ると思うので、taketoshiさんの紹介していないサイト書いておきます。
「C言語入門」
http://wisdom.sakura.ne.jp/programming/c/
「C言語入門」
http://www5c.biglobe.ne.jp/~ecb/c/c00.html
「初心者のためのポイント学習C言語」
http://www9.plala.or.jp/sgwr-t/
相性もあるので読みやすいサイトを使ってみるとよいでしょう。
Re: 入門サイトとプログラマーについて
Posted: 2014年12月12日(金) 19:34
by ptolemy
softya(ソフト屋) さん、taketoshiさんご回答ありがとうございました。
softya(ソフト屋)さん
> 何の基本でしょうか?
日常的に組むのに支障ない程度の知識くらいのものを基本と思っています。
しかし、基本というものは境目がよくわからないのでこの基本です。
また、苦Cで足りなかったわけではなく、十分なのか不安になってしまって質問いたしました。
>自分でプログラマーと宣言すればそれでプログラマーです。プロとアマチュアの境目は広いです。
なるほど。そのような職業があるわけではなく、自称ということですね。
近ごろかなり考えていたものがわかりました。ありがとうございます。
>相性もあるので読みやすいサイトを使ってみるとよいでしょう。
サイトのご提示ありがとうございます。
全て目を通してみたいと思います。
taketoshiさん
>アマチュアでも仕事でもプログラムを組む人はプログラマーです。
定義的に言えば僕のような初心者でもプログラマーというのですね。
でも世間的にはいえないかもしれませんが・・・
>おすすめサイトはこちらに成ります
ありがとうございます。
こちらは書店で見かけた気がします。
softya(ソフト屋) さんがご提示されたサイトとこちらも全て閲覧したいと思います。
>作りたいものが見つかると良いですね。
一応、DXライブラリでFPSを作ってるのですが、プログラムを書いているとき、
いつも「僕はC言語をしっかり理解してるのだろうか」と心配になるので
他のサイトでも復習したいと思って質問いたしました。
今回はかなりサイトを提示していただいたのでしばらく勉強したいと思います。
本当にありがとうございました。
Re: 入門サイトとプログラマーについて
Posted: 2014年12月12日(金) 20:16
by softya(ソフト屋)
> いつも「僕はC言語をしっかり理解してるのだろうか」と心配になるので
独学で1年ぐらいだと、まず知らないことのほうが多いと思いますし、それが普通です。
他人の良いコードを沢山読んでいる人は別ですけどね。
例えば私の講座だと、わからないという人が多いのですがC言語やプログラム設計の理解度を把握するには良いかもしれません。
「マイ 日記 • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/blog.php?u=114&sd=a&c=2&start=10
3ページめの「ちょー簡単RPG講座7-1 ゲーム本編画面遷移」辺りからわからないとよく言われます。
C++の文法は使っていません。
Re: 入門サイトとプログラマーについて
Posted: 2014年12月12日(金) 20:45
by softya(ソフト屋)
Re: 入門サイトとプログラマーについて
Posted: 2014年12月14日(日) 20:54
by ptolemy
返信遅れました。
>3ページめの「ちょー簡単RPG講座7-1 ゲーム本編画面遷移」辺りからわからないとよく言われます。
僕も全然理解できてないです。
>脱初心者と言うことで、アルゴリズムやらC言語の深い話のサイトも貼っておきますね。
ありがとうございます。頑張って脱初心者を目指します。
僕は、FPSを作るにあたって
プログラムに無駄があるんじゃないかという心配がかなりあります。
それで動作などが遅くなったりしてるんでは?
という気にいつもなるんですが、プログラムによって動作は遅くなったりしますよね?
また、プログラムの書き方で
コード:
if(a==1)printf("スペース無\n");
if ( a == 1 ) printf ( "スペース有\n" ) ;
僕はいつも前者の書き方で プログラム or 掲示板 に書いてるんですが、
回答のプログラムをみると後者のようなスペースを空けた書き方が多いんですが
これはみやすさという以外意味はないんでしょうか?
もしかしたら、見間違えかもしれないです。でしたらすみません。また、自分で見よう見まねで書いたので変なところにスペース入ってたらすみません。
Re: 入門サイトとプログラマーについて
Posted: 2014年12月14日(日) 21:14
by softya(ソフト屋)
プログラムに無駄があるんじゃないかという心配がかなりあります。
それで動作などが遅くなったりしてるんでは?
無駄は絶対にあります。プロでもあります。
可読性のためにわざとムダにすることもあります。
という気にいつもなるんですが、プログラムによって動作は遅くなったりしますよね?
無駄は遅くなりますが、何が何でも速くなければいけないところと、無駄でも可読性を優先される所があります。
そこを判断できるのが中級者以上です。
初心者は可読性を優先して下さい。
アルゴリズムの選択の方が速度低下を招く可能性は高いです。
それも全て経験が物を言います。
無駄があるかも知れなくてもプログラムを組んで下さい。
リファクタリングや、作り直しで改善すればよいのです。
最初から完璧を目指すのは間違いです。
3年、4年と常に考えて組み続けていれば分かってきます。
僕はいつも前者の書き方で プログラム or 掲示板 に書いてるんですが、
回答のプログラムをみると後者のようなスペースを空けた書き方が多いんですが
これはみやすさという以外意味はないんでしょうか?
みやすさは非常に大事です。そのためのコーディング・スタイルです。
書き方のスタイル(コーディング・スタイル)は色々ありまして各人のこだわりもあります。
「字下げスタイル - Wikipedia」
http://ja.wikipedia.org/wiki/%E5%AD%97% ... 4%E3%83%AB
まぁ、1つのゲームの中でスタイルが揺れ動かないほうが良いです。
Re: 入門サイトとプログラマーについて
Posted: 2014年12月18日(木) 18:21
by ptolemy
見やすさというものは速さを妥協させてまでするものなのですね。
とりあえずプログラムを組みます。
また、コーディング・スタイルについてもみてみます。
ご回答ありがとうございました。
Re: 入門サイトとプログラマーについて
Posted: 2014年12月18日(木) 19:50
by softya(ソフト屋)
なぜ読みやすさが必要かと言うと
1.読みやすいのでバグが発生しにくい。
2.間違えても間違いを発見しやすい。
3.機能拡張が容易。
4.1年後に見ても修正が可能。
と良いことが多いからです。
初心者のプログラムはソースコードの行数で私の経験だと2000~3000行あたりと1万行あたりで組み方のステップアップを行わないと自分でも流れを把握できないプログラムを作ってしまいがちです。
読みやすさが特に大事なのは行数が増えた時ですので、いつも意識しながら組んでみてください。
※ 読みやすさとは、字下げは当然として、変数の適切な命名、使用アルゴリズムのわかり易さ、適切な関数分けと引数の渡し方、変数のスコープと寿命の適切な使い分け、適材適所なコメントなどなど総合的なものです。結構難易度は高いですよ。
Re: 入門サイトとプログラマーについて
Posted: 2014年12月20日(土) 19:09
by ISLe()
ptolemy さんが書きました:見やすさというものは速さを妥協させてまでするものなのですね。
読み易く、且つ高速なコードは書けます。
読み難い部分だけを適切に分離することは読みやすさに繋がります。
適切に分離できないとネックになっている部分の特定が難しくなり、効果的な対処もできなくなります。
適切に分離できれば効果的な対処が容易であり、開発効率も実行速度もともに上がることになります。
ちなみに、無駄な書き方をしたほうが高速に動作する場合も(しばしば)あります。
作る前から「かもしれない」と考えることのほうがはるかに無駄です。
『YAGNI』を検索してみてください。
Re: 入門サイトとプログラマーについて
Posted: 2014年12月22日(月) 16:14
by ptolemy
softya(ソフト屋)さん
>なぜ読みやすさが必要かと言うと
1.読みやすいのでバグが発生しにくい。
2.間違えても間違いを発見しやすい。
3.機能拡張が容易。
4.1年後に見ても修正が可能。
なるほど。いいことばかりですね。読みやすいプログラムを組むように心がけます。
>読みやすさが特に大事なのは行数が増えた時ですので、いつも意識しながら組んでみてください
わかりました。いまプログラムをソースを分けたり、関数にしたりして整理してみてます。
書き方ですが
上達(advance)するために
の空白の入れ方を参考にして書くことにします。
ISLeさん
>読み易く、且つ高速なコードは書けます。
書けるんですね。どちらも譲れないけどどちらかを選ばなければいけないものと思ってました。
勉強になりました。
>ちなみに、無駄な書き方をしたほうが高速に動作する場合も(しばしば)あります。
作る前から「かもしれない」と考えることのほうがはるかに無駄です。
『YAGNI』を検索してみてください。
検索いたしました。
YAGNI:wikipedia
実際に必要となるまで機能を追加しないということですね。
今後に生かしたいと思います。
みなさんご回答本当にありがとうございました。
今後のプログラミングにすごくためになることばかりでした。
生かしていきたいとおもいます。