「printf」を含む日記 RSS

はてなキーワード: printfとは

2017-11-01

anond:20171029161516

FizzBuzz問題を読み替える

具体的に1から15までの例で考えてみる。

集合で考えるとして、集合Aを3の倍数、集合Bを5の倍数とする。

U = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }

A = { 3, 6, 9, 12, 15 }

B = { 5, 10, 15 }

A∩B = { 15 }

¬(A∪B) = { 1, 2, 4, 7, 8, 11, 13, 14 }

ベン図は次のようになる。

+-----------U----------+
|                      |
| +---A------+         |
| | 3 6      |         |
| |  9 12 +--+---B---+ |
| |       |15|       | |
| +-------+--+ 5 10  | |
|         |          | |
|         +----------+ |
|                      |
| 1 2 4 7 8 11 13 14   |
+----------------------+

ド・モルガン定理より

¬(A∪B) = ¬A∩¬B

よって、FizzBuzz問題は次のように読み替えられる。

  • (A∩¬B)3の倍数、かつ、5の倍数でなければ "Fizz"を出力
  • (¬A∩B)3の倍数でなく、かつ、5の倍数ならば "Buzz"を出力
  • (A∩B)3の倍数、かつ、5の倍数ならば "FizzBuzz"を出力
  • (¬A∩¬B)3の倍数でなく、かつ、5の倍数でもなければ元の数字を出力

表にしてみる。

5の倍数5の倍数ではない
3の倍数"FizzBuzz""Fizz"
3の倍数ではない"Buzz"元の数字

コード検討

よくあるコードスタイルWikipediaから借りることにして、使用する言語をCとする。

https://ja.wikipedia.org/wiki/Fizz_Buzz

さて、元の論理を愚直に実装するとどうなるだろうか。

#include <stdio.h>

int main(void) {
    int i;
    for (i = 1; i <= 100; i++) {
        if (i % 3 == 0 && i % 5 == 0) {
            printf("FizzBuzz\n");
        }
        if (i % 3 == 0 && i % 5 != 0) {
            printf("Fizz\n");
        }
        if (i % 3 != 0 && i % 5 == 0) {
            printf("Buzz\n");
        }
        if (i % 3 != 0 && i % 5 != 0) {
            printf("%d\n", i);
        }
    }
    return 0;
}

ここで、元増田が発想したような「3の倍数の後に5の倍数を判定させて"Fizz"と"Buzz"を連続出力すれば"FizzBuzz"の段は要らないんじゃね?」作戦を発動する。

"FizzBuzz"の判定をごっそり削り、"Fizz"と"Buzz"の条件が同時に起こることを考慮する。

forの終わりに改行するようにする。

コードを追って、元の論理と合ってるかを確認しておく。

#include <stdio.h>

int main(void) {
    int i;
    for (i = 1; i <= 100; i++) {
        if (i % 3 == 0) {
            printf("Fizz");
        }
        if (i % 5 == 0) {
            printf("Buzz");
        }
        if (i % 3 != 0 && i % 5 != 0) {
            printf("%d", i);
        }
        printf("\n");
    }
    return 0;
}

2017-10-29

https://anond.hatelabo.jp/20171029133009

初心者は改行付きの出力コマンドしか習ってないことが多い

Cの場合printf一般的なのでそうでないことも多いけど、

それでも改行文字を入れずにprintfを2回呼ぶと出力が繋がる、ということを理解していなきゃいけない。

・出力が何段階かに分割されるのでややこしい

プログラムのあちこちに入出力関数が散らばっているというのは混乱を招く。

慣れてるプログラマでも読みにくくなるからと言って嫌うこともある。

初心者向けの本じゃなきゃその解法は全然あり。むしろ当然の発想。

2017-05-15

初心者の人のプログラミング力が向上していく過程とそれにかかる年数

初心者の人のプログラミング力が向上していく過程とそれにかかる年数を想像してみた.

1年目 何かのプログラミング言語を触る.よくわからない.とりあえずコード書く.

    アルゴリズムという概念を知る.

2年目 プログラミングというもの理解できる.スコープに注意(値渡し,参照渡しの概念理解できる)

    を向けられるようになる.クラス雰囲気がわかる.メソッド関数の使い方を理解できる.

3年目 この頃からこれが作りたい!となったときにそれを作れるようになる.

    それぞれのドメイン必要知識を学ぶ.

4年目 コードキレイに書くためにはどうすればいいのか学び始める.

    デバッカ存在を知る.printfデバック卒業やったね!

5年目 バージョン管理テスト重要性に気づき,学び始める.

これくらいは,みんなできるようになってほしい(希望

2017-04-13

http://anond.hatelabo.jp/20170413190432

Pythonとかじゃないの? インデントブロック作る言語

if a == 5:
    print "A==5"

if (a == 5) {
    printf("A==5");
}

と同じ現象だと思う。

2016-11-06

親子ギャリック砲と親子カメハメ波を重ねるツイートトレンドになっていた

ただエネルギー弾飛ばすだけなんだから全部同じでいいじゃんみたいに思った

車輪の再開発っぽい

プログラミングで言うと言語の違いみたいなものなのか

やっぱりぱいてょんで開発するときはぱいてょんの関数がそりゃあ必要になる

しか言語内で同じ機能を持つメソッドが重複しているような気がするのはどうなのか

coutとprintfみたいなもの

2016-10-13

英文法で迷ったら、一回プログラミング言語にすると良いよ

なんか知り合いが、↓を読んで、全く判らんが何だこれって言ってたんで解説したのメモっとく

英語が読めるようになるには英語を読むしかないが『日本人の英語』シリーズは読む価値あると思う - しいたげられたしいたけ

制限用法」と「非制限用法」は、「まず制限用法ありき」の用語

日本人英語シリーズは、

「a」と「the」と「何もついてない」名詞が、

全部違う名詞って話から入ってると思うんだけど(うろ覚え

ぶっちゃけ、「the」って言ってんのにそれが自明以外で説明がなかったらキレて良い。

と、英語話者は思ってるってのが、まず大前提にある。

なので、「制限用法」ってのは、

「オレの言ってる姉は、例のアレよアレ、あのアネよ」って制限するって意味がまずある。

で、そのうえで、そうじゃない「非制限用法」がある。

制限用法を、短文で理解するのムリ

そのまんま引用するけど、ここで「older sister(姉)」って言ったあとに、

なんかシカゴとか言ったな、姉の説明ねって、英語話者はボーっと聞いてたら思う。

  • 「こないだ姉ちゃん家行ったんだけどさ、シカゴに住んでる」

これを聞いた日本人は、どう思う?

『そんなん、聞いてる相手によって違うに決まってんじゃねーか』が正解。

  • (息子→父親)「こないだ姉ちゃん家行ってきたんだけど、シカゴの」
    • 父、母、姉、姉、息子の5人家族で、父親は姉が二人居るのを知ってる

この状況だと、父は「ああ、2人の姉のうち、シカゴの方だってのを伝えようと制限したんだな」って考えるわけだ。

まあ、考えないけど。どっちの姉ってああシカゴの方のねって理解するだけで。

これが制限用法ね。

この状況だと、友達は「ほーん、姉ちゃんシカゴに住んでんだ」と素直に思うだろう。

これが非制限用法ね。

おいおい、前提条件で制限用法か非制限用法か違うってナニソレ、とか思うだろ?

それが頻出である文脈によって判断する」ってヤツだよ。

(厳密に言うと、『日本人英語』での説明にも『前提条件無しで短文を読むなら』ってのが常についてると思って読まないといけないハズ)

プログラミングに置き換える

そうすっと、「どういう姉」かを伝えるやり方があって、

  • シカゴに住んでる方の姉貴を訪ねた。

って書いてあったら、日本人は「ほーん、じゃあシカゴに住んでない姉も居るのね」って考えるから

  • 「私には複数の姉があり、そのうち一人がシカゴに住んでいる。私はその姉を訪ねた」

って意味である、ってのが「I visit my older sister who live in Chicago.(コンマなし)」の解説なワケよ。

このまんまだと判り難いだろ?

疑似C言語あたりにすると、こんな感じ。

#define CHICAGO 1

int sister[3] = {45, 43, 41};
int who;

who = CHICAGO;
printf("%d", sister[who]);

まあ結果は43が出てほしいよね。

シスター配列を、CHICAGO指定してんのね。sister指定するのに使う変数who

ならこんな感じ

#define CHICAGO 1

int sister = 43;
int who;

printf("%d", sister);

who = CHICAGO;
printf("%d", who);

カンマで区切られてるから、『一回出力』してんのね。姉だ。

で、その後、どこ住んでるかの番号が出力される感じ。シカゴだ。

英語カンマは、「そこで一回出力してくれ」って命令だと思うのがコツ。

カンマが入っていないwhoは、ワザワザそれを伝えて限定しようとしてると読むべき。

まとめ

英語よりC言語の方が楽。

楽な言語に落とし込んで理解した方が早い。

2016-10-11

vimのpatchを書く→コンパイルメイクエラーループで嫌になる

patchを書いたとしてもコンパイルメイクエラーになる。

Rubyみたいにさくっと確認できるわけじゃないから面倒くさい。

よっぽどいいPC買わないと時間がかかるだけ。

本当Cって初心者に厳しいね

patch書く時間より無駄時間のほうが多い。

printf入れながらどこの関数が実行されてるのか調べるだけでマジ時間消費パネェッス。

学校コンピュータ室のはCore i5デスクトップパソコンからマジパクりたい。

小学生の時にお年玉で買った中古ノートパソコンだと厳しいわ。

中学生で高性能なパソコン持ってる奴が本当うらやましい。

2016-08-16

https://teratail.com/questions/44353

やっぱりなdynだと思った

lua/dynになってるから使えると勘違いしたな

echo has('lua')じゃなくて:echo luaeval('printf(1)')で確認しろ

vim

2016-07-18

Vimフィルタコマンドで使うUNIXコマンド

http://vim-jp.org/vimdoc-ja/change.html#filter

Vimにはフィルタコマンドといって、テキスト任意UNIXコマンドで処理するExコマンドが用意されている。

用意されていて、実際強力なんだけど、Vim組み込み機能で間に合うことも多くて、下記以外はあまり使っていない気がする。

以前はVim正規表現に慣れないからとPerlを使ってたりもしたけれど、Vim正規表現も悪くないかなとなって。こう。

何かおすすめUNIXコマンドがあったら教えてください。

bc

簡単計算をするときに使う。1行に計算式を書いて「:.!bc<CR>」あるいは「!!bc<CR>」とすると計算ができる。

(小数を扱いたいときは-lオプション指定する)

「<C-r>=」で代用できる。

sh

長めのコマンドを実行するときに使う。「:%!sh<CR>」とすると書いたシェルスクリプトを実行できる。

最近Bashの<C-x><C-e>で良い気がしてる。こちらだとヒストリで戻って<C-x><C-e>として再編集することもできるので。

column

簡単な整列をするのに使う。ビジュアルモード選択して「!column -t<CR>」とすると整列ができる。

(デフォルトのセパレータがスペース二つなので、一つにしたければ-oオプション指定して「!column -to' '<CR>」という風にする)

vim-easy-alignやvim-aligntaが入っているならそれでいいかも。

jq, xmllint, pup

それぞれJSONXMLHTMLを整形するのに使う。JSONは「:%!jq .<CR>」、XMLは「:%!xmllint --format -<CR>」、HTMLは「:%!pup<CR>」。

ただ「jq . <JSONファイル> | vim -」としていたりして、直接Vimの中で使ってない場合が多いかも。

awk

連番を振る時、重複行を削除する時、指定した列を抜き出す時、などなど、色々なことに使える。

それぞれ「:%!awk '{printf"\%-6d \%s\n",NR,$0}'<CR>」、「:%!awk '\!a[$0]++'<CR>」、「:%!awk '{print$2}'<CR>」といった風にする。

tee

保存するために管理者権限必要場合sudoと一緒に使う。「:%!sudo tee %<CR>」とすると保存できる。

編集中のテキストを何処かに残すため……と思ったけど:wで事足りる。

2016-06-23

なんだかんだで諦める、教えを乞う、仕切りなおすのは3時間過ぎてからだと悟った

#include &lt;stdio.h&gt;

main(){

int i=0;

int j,k ;

int data[10]={1,1,1,1,1,1,1,1,1,1};

int data2[10];

//j = data[4] ; 左辺に右の値が与えられる常識を忘れた男現る

while(i &lt;= 10){

j = data[i] ;

data2[j-1] = j;

k=data2[j-1];

printf("%d",k*2);

i++;

}

}

2016-01-12

厨ニFizzBuzzを書いた

%:include <stdio.h>
%:include <stdlib.h>
%:define 三つ子と五つ子の協奏曲 main
%:define ☯ ;
%:define 環 while
%:define 異名 typedef
%:define 終焉 101
%:define 伝承(詩) printf(_Generic((詩), int: "%d\n", char *: "%s\n"), 詩)
%:define 純白を漆黒漆黒を純白に(色) (色 = 終焉 - 色)
%:define 終わりは、斯く示された。 return 0

異名 int 無限整数幻想を維持せぬ整数異名 char 世界言葉を扱うには不十分な箱 ☯
異名 void 虚無 ☯

無限整数幻想を維持せぬ整数 破滅の刻 = 終焉 ☯

虚無
三つ子と五つ子の協奏曲(栞, 慈悲深き終身独裁者の注文)
	無限整数幻想を維持せぬ整数   栞 ☯
	世界言葉を扱うには不十分な箱 **慈悲深き終身独裁者の注文 ☯
{
	環 (0 <-- 破滅の刻
		&& 純白を漆黒漆黒を純白に(破滅の刻)
		&& ((破滅の刻 % 3) * (破滅の刻 % 5)
			? 伝承(破滅の刻)
			: 伝承(破滅の刻 % 15 ? 破滅の刻 % 5 ? "Fizz" : "Buzz" :"FizzBuzz"))
		&& 純白を漆黒漆黒を純白に(破滅の刻)) ☯
	終わりは、斯く示された。 ☯
}

2016-01-09

[] テスト

ちょっとテスト

#include &lt;stdio.h&gt;

int main()
{
    printf("hello, world\n");
}

不等号がおかしくなるなー。

2015-11-06

全部printfにしなきゃだめ?(シェルスクリプト)

echo "Hello Masuda!"

こういうのはechoでも移植性あると思うんだけど。

2015-09-06

Vim不思議なインデント

int
main()
{
printf("Hello Masuda!\n");
return 0;
}

コピペしたらインデント消えたわ…gg=Gでインデントなおさんと。

	int
main()
{
	printf("Hello Masuda!\n");
	return 0;
}

そうじゃない…そうじゃないんだ…。

BSDスタイルでは戻り値の型の前にインデント入れたら駄目なので困った。

" tN    Indent a function return type declaration N characters from the
"       margin.  (default 'shiftwidth').
" 
" 	cino=		    cino=t0		cino=t7 &gt;
" 	      int	      int			 int
" 	  func()	      func()		  func()

cinoptionsでこれを設定すれば解決できるのは知ってる。

だけどデフォルトでインデント入れるのはどういう事情があってのことなんだろう。

2015-03-07

externの説明でmain関数で完結した実例見てもわからんだろう

どこの講座のexternの実例見てもだいたいexternいらないのばかりなんだよね

先に定義しておけばいいので、main関数でexternの説明する限り必要性を説明するのは難しいと思う

ファイルを分割した例でも完全に定義があとに来るケースじゃないと。

しいて言えばこんな感じにするべきだろう

別にネタではないので釣りなのか悩まないように

#include &lt;stdio.h&gt;

int main(void)
{
	extern int x;
	printf("%d\n",x);
	return 0;
}

int x=777;

2015-02-28

http://anond.hatelabo.jp/20150228180323

$ cat hello.c 
#include &lt;stdio.h&gt;

int main() {
   printf("unko&#92;n");
    return 0;    
}
$ gcc hello.c 
hello.c: 関数main’ 内:
hello.c:4:1: エラー: プログラム内に逸脱した ‘&#92;343’ があります
hello.c:4:1: エラー: プログラム内に逸脱した ‘&#92;200’ があります
hello.c:4:1: エラー: プログラム内に逸脱した ‘&#92;200’ があります

2015-01-23

http://anond.hatelabo.jp/20150123230244

自己トラバだけど、PHPだと同じ計算は以下になるんだよね。

変数存在してるか保障されない、とかいろいろあると思うが、「サンプルやからかいことは気にするな」で)

なお、軸はXYZ固定「じゃない」ぞ。実際は「おっぱい大きい」「可愛い」「背が高い」とかそんな軸になる。

$base = array(
    "x" =&gt; 1,
    "y" =&gt; 2,
    "z" =&gt; 3
    );

$target = array(
    "x" =&gt; 3,
    "y" =&gt; 5,
    "z" =&gt; 6
    );

$distance = sqrt(array_reduce(array_keys($target), function($result, $k)
      use($base, $target) {
      return $result + pow($base[$k] - $target[$k], 2);
      }, 0)
    );


printf("DISTANCE=%5.2f", $distance);

2014-11-24

半年経ってもprintf理解しない人にイラっとしたのだが

うちの学科にはプログラミング演習という科目があるのだがprintfすら分かってくれない人が居てつらい。

その授業は前期と後期で分かれていて前期はその言語の文法と簡単なアルゴリズム(文字列操作とか素数判定等)の演習があった。

から前期をちゃんと履修している人ならprintfの使い方で詰まるということは絶対にありえない。

なんでこんなことを言っているかというとプログラミングを教えてくれと言っている人たちがあまりにも単位を取ることに必死からだ。いわゆる単位乞食かね。

前期に関しては、やはり全く未経験という事情も考えると、経験したことのある俺は教えてあげる義務が少しはあるな・・と思って分からないところは手伝った。

プログラムバグがあったらまずprintデバッグしてみるといいよ、配列は0からsize-1までだから気をつけて、などなど俺が独学では学び取りにくいと思ったことはちゃんとアドバイスしたつもりだ。

だけど後期でこんな事を言ってくる奴がいてだ、

printf引数がわかんないんだけど・・・

「代入って何?w」

「分かんないからソースくれ」

というのはさすがにキレた。心のなかで。分かんないなら自分が考えた過程くらい示してほしいんだよなあ。前期で教えたことはどうなったんだ?

「これからはちゃんと勉強するから私のために時間取って教えてほしい!」と言ってくれた人(=Aさんとする)もいるけどそれは遅すぎた。

俺の時間を奪っといてそれはないだろw しかも周りには苦労して覚えようとしているのにもかかわらず前期いい成績を取っておいて、

サークル充までしておいて、その上なんのありがたみもなく剽窃などというそんな都合のいい話は応援したくない。

それ以降は、プログラミングを本当に知ろうという気のある人以外断るようにしている。

ところでAさんなのだが、その人の守備範囲演劇EXILEなど芸能好きな人なので、そういう分野に疎い俺とは全く異種である

この間、父親世代の方々と酒を交わしたのだが、多様な人とコミュニケーションを取ることは面白い重要であることを諭されて、

実際に俺は将来的に他人他人を結びつけてチーム開発的なことをしたいと思っているのでそれはすごく共感している。

これを踏まえるとAさんと仲良くなるという手を取るというのも考えられなくはないが先ほどの経緯から感覚的には受け入れられない。

これでいいよなあ。でもこうしたところで自分は異種の人と話せないのではないかという不安が募るばかりだ。

プログラミング技術を上げて作品を世の中に送り出そうという情熱をもつ俺に対してこの間の飲みは、

本当にそれだけやっていれば満足ゆく作品を作れるのか、そしてもっと一般的には将来的に負け組にならないだろうかという疑問を残したのである

2014-08-12

http://anond.hatelabo.jp/20140812123017

中括弧の省略とネストの深さは関係ねーだろって。

「中括弧は省略しない」「ネストは深くしない」全く別の話だし両立するだろ。

中括弧が無くたってネストが深いのは糞コードだろうが。

#include<stdio.h>

int main() {
    int a = 1;
    int b = 0;
    if (a)
        if (b)
            printf("Hello");
        else
            printf("Howdy");
}

2014-08-07

http://anond.hatelabo.jp/20140807005003

結論から言うと、後輩さんの会話能力を上げることは無理です。

問に対する結果の思考過程がそのまま出力される人はいます(私がそうです)。

これは生まれついた脳みそ問題なので、どうしようもありません。

プログラムで言うとデバッグ用のprintfが残ってる状態です。

今後は、メールによるコミニケーションに切り替えて上げてください。

一度ダンプさせれば、結果だけ帰ってきます

以上です

2014-04-09

#include <stdio.h>をおまじないって説明すると馬鹿にされるけどさ

Cの入門書なんかで#include <stdio.h>を「今はとりあえず、おまじないと思っておいてください」みたいな説明してるとマニアックな人から糞本扱いされるけど、じゃどんな説明するのが正解なんだろうか。

hello worldを書いてる初心者に、プロトタイプとかマクロとかから説明するのだろうか。

なぜプロトタイプみたいのが必要かって言うと、printf()は分割コンパイルライブラリというものに入っていて……とか初心者が納得のいくまで説明をしなきゃならないのか。

「stdio.hというファイルprintf()を使うための情報が入っているのでそれを取り込む命令です。詳しいことはおいおいわかりす」って簡単に説明するなら「今はおまじないとおもっていてください」と大差ないし。

バシッと納得のいく説明の例を教えてほしい。

2014-01-19

SFCへの申し送り事項

宛、新入生とか、これからプログラミング始めたい人へ。

なんか偉そうに書いてみた。

最初に理解すべきこと

SFCには頭がおかしプログラミング言語使いがたくさんいる。特に研究室に入ると、バイトバリバリ書いている人間や、研究趣味ライブラリを量産する人間出会うこともあるだろう。彼らに惑わされてはいけない。最初は彼らの言っていることは一つも理解できないだろう、理解する必要は無い。彼らはプロダクションで安定するかどうかという縛りから自由だ。流行り廃りに敏感で、昨日言ってることと今日言ってることが違う。

これは実際に手を動かして使ってみて好感触かどうかささっと確かめられる人間からできることで、プログラミングできない人がこれについていこうとしたら間違いなくプログラミングが嫌いになる。

  • js書くならcoffeeがいいよ
  • それgitしてよ、見てあげるから

こういう言葉に惑わされるな、コードを書くための勉強をするな、コードを書け。

できる人は概ね、できない人の気持ちがわからない。受動的になるな。積極的に書け。

プログラミングへのモチベーション

プログラミングができるようになるといいことしかない。

プログラミングなんて特殊技能で、少なくとも教養じゃないでしょ..」という認識が横行している今だけのチャンスとも言える。

webプログラミングができると「技術的には簡単だがアイデア一発で作ってみたもので、ほんのちょっとだけ有名になれる可能性がある。論文を書いて学会投稿したりニュースになったりするよりも、よっぽどお手軽に(一部での)社会的ステータスを高めることができる(かもしれない)。

↓ こういうのでいい(失礼だが)。

資格マニアあなたへ

資格勉強はある程度コードを書けるようになってから考えよ。

真面目な理由が必要あなたへ

こう言っている人間を見て何を思うだろうか。

「いや少しずつでいいから今やれよ」とか「英語できたらもっと世界ひろがるのに..」とか「大学生なのにそれで恥ずかしくないの」とか思うかもしれない。

英語プログラミングに置き換えてみよ。

知らない世界を知らずにいることは大いなる機会損失であるプログラミングに金はいらない。金はないけど時間はある、時間を大量投入できる最後の機会、大学生である内に学んでおいた方が望ましい。

SFCプログラミング講義

基本的スタンスとして、講義ではプログラミングを教えてはくれない。講義に期待するな。プログラミングに限らず、全ての講義は自習への足がかりであり、興味のとっかかりである。実際に意思を持って積極的コードを書かない限りプログラミングのことは好きになれない。自分で考えながら手を動かしてコードを書かなければ覚えないし、初学者が配られたプリント写経しても血肉にならない。

今日から俺は!」という感じでプログラミング講義を受けると爆死は約束された未来である。「腕試ししよう」「これなら楽勝じゃろ」という意気込みで講義を受けると、意外に学ぶことが多い。完全な初学者の域は脱しておいた方が講義有効的に活用できる。少なくとも、最初の2週間をインストール環境構築のみで終わらせるスジの悪い講義を取得してはいけない。

また、講師によってはJavaScriptのことをJava呼称したり、JavaScriptLispに比べて読解が平易であるためハッキングを受けやすいと言ったことを平然と言ってのける。選別にあたっては「講義名」と「講師名」を明言した上で「先輩に聞く」「Twitter活用する」等の手段をとるべきである。十二分に注意されたし。

最初に選択すべきマシン

道具を選ばないのはプロだけである。初学者は多少高くても自分サポートしてくれる良いマシンを入手すべきである。1行のコードを書くだけでも恐ろしい手数が必要アーキテクチャを選択するのは愚行だ。

具体的に言うと「最初の一台はMacを買え」。

モデルは何でもいい、無理して上位機種を買う必要は無い。お金が余ってるならMacBookProを買えばいいし、勿論一番安いMacBookAirでも全く問題ない。特にweb系のコードを書く際、インターネット検索して出てくる記事はだいたい「OSUNIXであること」を前提としたサンプルである。これをWindowsの開発環境に読み替えるのは、初学者に取ってつらいだろう。

また、Macならばパフォーマンスは多少犠牲になるがwindowsも起動できる。どうしても光学機器必要になればCNSコンサルタントで外部接続式の光学機器を貸し出してくれる。Macが気に入らなくてもどうせ研究が射程に入る3年生に上がったぐらいのタイミングPCを買い替えるだろう。バイトして稼いだ金で「俺の考えた最強のマシン」に買い替えればいい。それまではMacを使え。

OSに固有の使い方なんて学ぶ価値はない、覚える価値も無い、操作時間が短縮されるだけだ。「普通会社Windowsなんでしょう?」というくだらない理由でWindowsPC選択肢の第一候補にするな。Windowsを買うなら積極的選択としてWindowsを買え。

SFCにおいて、PC毎日抱えて通学し、毎日開いて講義を受け、苦楽を共にする相棒だ。消極的に選択するな。

共同購入

SFCには「共同購入PC」という制度がある、これを利用してはいけない。

もし要件が変更され、Macラインナップに入れば積極的に利用するべきである

最初にやるべき言語

条件を示す。

ビジュアル表現できる言語であること

見た目に変化が無いと楽しくないだろう、こんなのを実行しても何も楽しくないはずだ。

#include &amp;lt;stdio.h&gt;

int main()
{
  int a;
  a = 1 + 1;
  printf("%d", a);
}
web上にブログ記事が十分にある言語であること

マイナー言語を選択してはいけない。「ライトウェイト言語」と呼ばれるくくりから選択肢するのがいいだろう、以下のようなものがある。

中でもjavascriptrubyは推薦できる、SFCでも書いている人間は多い。

phpperlおすすめできない。ドキュメントは多いが、不慣れであればロジック以外に割かれる労力が非常に多い。python日本語ドキュメントが少ないため最初はつらいだろう。

導入が簡単な言語であること
例えば

最初javascriptをやるのは理に適っている。index.htmlというファイルを作り、scriptタグの中にコードを書き、ブラウザindex.htmlを開けばもう実行されている。web上のドキュメント量も豊富だ。

rubyも推薦できるが、少なくとも「自分HTTPサーバを立てる」という言葉にピンと来るようになってから使い始めた方がいいだろう。きっと何をしていいかわからないはずだ。

他にもProcessing(http://processing.org)などが推薦できる。ダウンロード時間がかかるだけでインストール作業は必要ない。こちらに関しては旧プロダクト名であるproce55ing」をキーワード検索すると記事が引っかかりやすいという暗黙のルールがあった、今はどうだか知らない。

最近ではnode.js採用事例も増えてきた(他に比べれば圧倒的少数、増加傾向にあるという意味)。クライアントでもサーバでも活躍できるjs学習コストパフォーマンスが高いと思われる。

勉強方法については後述のセクションを参照せよ。

次にやるべき言語

書ける言語は一つにしぼってはいけない。なるべくたくさんの言語を使ってみよ。ブログ記事を読みあさり、「その言語は何が得意なのか」調査しろ。不得意なことをその言語やらせるな。

下記のような上達ストーリーが考えられる。

例えばpython音響処理や数学計算が得意だったりする。そういった特徴を徐々につかみながら書ける言語の種類を増やし、好きな言語を見つけて好きな言語のことをもっと好きになればいい。

自分が好きな言語のことを胸を張って自慢できるようになったなら、あなたは既に初学者ではない。

エディタ

人に聞くとvimemacsを推薦されるかもしれない。もしそれを使ったことが無いなら、あるいは「プラグインの導入方法がわからない」なら、やめろ。Terminalを開かなくても書けるGUIアプリテキストエディタを使え。

具体的にはSublimeText(http://www.sublimetext.com/3)を使うのがよい、無料である

ライセンス必要だが、起動時に「買ってね!」というダイアログが出続けるだけで無料で使用し続けられる。信頼できるエディタだと思ったら買えばいい。

設定方法

SublimeText3にPackageControlというものを導入すると、標準で備わっていない機能拡張できるようになる。こちらのブログ(http://p.tl/Ev7b)の「インストール手順」セクションのみを実行する。たとえば「Jadeという言語を、文法に従って色付けしてほしい(SyntaxColoring)が、その機能が無い」という時に、「Jade用プラグイン」をSublimeText内で検索し、インストールすることができる。

もし使い方がわからないければ、回りにいる「プログラミングができる優しい人」に上の記事を見せ「インストールしてくれませんか?」と頼んでみろ。きっと戸惑いながらも正しい操作をしてくれるだろう、一挙手一投足を見逃さず学べ。

勉強方法

例えば

エロ画像を集め続けるツールが欲しいとする。どうやったらいいか考える。クライアントjsだけでは限界が来る。rubyなど別の言語を試すステップを踏む。

http://www.slideshare.net/shokai/ss-26387303

ブログの読み方

プログラマ同士じゃないと伝わりにくい用語が頻発すると思う。逐一人に聞いていてはラチが開かない。人に聞くな、適当に読み飛ばせ。

ブログ記事は本ではない、それを読解しなければならない理由はない。適当はてブでもつけといて、次の記事を読め。たくさん読めば共通項が見えるだろう、コードが書けるようになるに従い読めるようになるだろう。

最後

みんなが息をするようにコード書いてさ、みんなでしあわせになろうよ。

2013-11-26

バグテスト残業

ストライクswitch文 これはゾンビプロセスですか? キル-9キル

シューウデンタイム 最終納期彼女 テイルズ・オブ・エンジニア

VeriSignのばら ガンプラC++ビルダーズ IT土方まさかデスマ

ブラックラー刃牙 ロード・ストア戦記 れじ☆すた 謎の変数X

クレームモア 売るSEやつら フリージングサーバーが)

コード・アサート・オンライン(本番)環境 エクセル・ワード

文字化け物語 進捗の巨人 gdgd進捗s 11人月いる!

シスターprintf 新製品エヴァンジェリスト 鉄腕atof 評価

コード規約~反逆のリリース コードゼロ 大ピンチコード コード:ブレイカー

OCaml香辛料 あらいぐまHaskell ヒカルGo ななかC/C++ コボラ

あした納める製品仕様を僕達はまだ知らない。 LOTUS;NOTES

継承ダイモス 鋼の連勤術師 コンパイラ 機動戦士ガンダム0080 パケットの中の戦争

廻るpingDRAM とんでboolean ゼロ除算の使い魔 THEビッグオー記法

頭文字D言語 吸血鬼ハンターD言語 D.言語-man Apache野球

ニンゲツスレイヤー プロジェクト炎上 業界は衰退しました

2013-09-09

Cのprintfポインタを打ち出すときは%xじゃない%pだ。64bitの時代なんだ。intが32ビットポインタが64ビットっていう構成がありえるんだ。

どうでもいい、話だけどな。ちょっと思ったので、こっちにも書いとく。

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん