「ほっ」と。キャンペーン

とりとめのないことを書いております。
by tempurature
カテゴリ
全体
プログラミング
scheme
verilog
未分類
以前の記事
2016年 04月
2016年 03月
2016年 02月
2016年 01月
2015年 12月
2015年 11月
2015年 10月
2015年 09月
2015年 08月
2015年 07月
2015年 06月
2015年 03月
お気に入りブログ
PHPで競技プログラミング
メモ帳
最新のトラックバック
ライフログ
検索
タグ
人気ジャンル
ブログパーツ
最新の記事
情報処理技術者試験 お疲れ様..
at 2016-04-17 18:55
基本情報技術者試験 平成27..
at 2016-04-14 04:48
基本情報技術者試験 平成27..
at 2016-04-13 23:03
苦い薬(ハーブ、サプリメント..
at 2016-04-09 14:03
「おバカ度チェックリスト」を..
at 2016-03-24 09:54
外部リンク
ファン
記事ランキング
ブログジャンル
画像一覧
カテゴリ:プログラミング( 65 )
プログラミング初心者のためのUNIX入門
世の中にはWindows以外にもMacOS, GNU Linux, FreeBSD, SolarisなどのOSがあります。

ここであげた4つのOSはUNIX系OSとよばれており、Windowsよりもコマンドライン機能が優れているという特徴があります。プログラミング関連の書籍の中には、UNIXについての知識が必要となるものもあるのでここで、UNIX環境の導入方法を紹介します。

たとえばC言語を習得したい場合、カーニハン&リッチー著「プログラミング言語C」で学習するのが一般的ですが、C言語はUNIXの基幹言語であるためUNIX環境を用意しなければ習熟は困難となります。

また、perl, ruby, pythonなどの言語はUNIXのシェルスクリプトと深い関係にあるのでWindowsよりもLinuxで環境を整えた方が自然で、簡単です。

Lisp, OCaml, Haskellなどのマイナー言語についてもWindowsよりもLinuxのほうが効率がいいです。


UNIX系のOSをWindowsマシンに導入する方法は主に3つあります。

①WindowsマシンにデュアルブートでOSをインストールする
 - ハードディスクの空き領域にパーティションを割り当てて、
  OSをインストールします。起動するたびにOSを選択しなければならない、
  2つのOSを同時に使うことができないといった理由から最近では
  あまり使用されない方法です。

②Cygwinをインストールする
 - CygwinはUNIX系ツールをWindowsで使用できるようにしたもので、
  立ち上げ時間が速いという特徴があります。
  ただし、拡張性にはかけます。

③仮想化ソフトをインストールする
 - 仮想化ソフトはWindows上でOSをエミュレートするためのもので、
  有名なものにVMwareとVirtualBoxがあります。
 - WindowsとUNIX系OSを同時に使用することができます。
 - また、拡張性も高く、OSをマシンに直接インストールするのと
  ほとんど同じレベルのことができます。
 - ただし、マシンリソースを消費し、立ち上げ時間もかかります。
  (物理コア数が4以上のCPU、4MB以上のメモリがないと
   厳しいです)
 - 初心者の人は32bit版Ubuntu(Linuxディストリビューションの1つ)
  をインストールしましょう。


②と③を両方実施することをおすすめします。とにかく、OSに対する
アレルギーを取り除きましょう。


[PR]
by tempurature | 2015-07-13 19:57 | プログラミング
プログラミング入門
あなたのプログラミングの動機はなんでしょうか?

・Windowsの本格3Dゲームを作りたい
 必要な知識:C++, DirectXまたはOpenGL
 難易度:4(やってもいいけど、他のことから始めることを強く勧める)

・Windowsのちょっとしたゲームを作りたい
 必要な知識:C#, Unityなど
 難易度:2

・メーラー・ブラウザ・表計算ソフトなどを作りたい
 必要な知識:C++
 難易度:5(絶対できない)

・テキストエディタを作りたい
 必要な知識:C++
 難易度:3(意外に難しい)

・Androidアプリを作りたい
 必要な知識:Java
 必要な機材:デバッグ用端末(Google Nexusが望ましい)
 難易度:3

・Webアプリを作りたい
 必要な知識:PHP, Javascript, HTML, CSS
 難易度:3

このような感じでしょうか?VBA, R, MATLABがやりたくてプログラミングを志す人はいないと思います。プログラミングをやる上で重要なことをまとめます。

① これと決めたら3ヶ月は続ける
       - あなたが今やっていることが、あなたに向いているのかどうかは分かり
        ませんが、プログラミングは1日ではできません。本でもサイトでも
        いいので、3ヶ月は続けてみてください。
       - 裏を返すと、気軽にプログラミングの勉強を開始して欲しくないという
        ことでもあります。始めようとしていることが、標準的にはどの
        くらいの期間で終わるのか、それは本当に初心者向けなのか、標準的な
        方法なのかはきちんと調べないといけないです。
       - あなたがもし職業プログラマになりたいのであれば、本当にプログラマ
        になることが最良の選択なのかをよく調べて、考えてください。
        プログラミングの才能だけではプログラマになることはできません
        (Joel on Softwareを読むのがいいでしょう)。

    ② できるだけ無料で済ませる

       - プログラミングの書籍は、初心者にとって選定するのが非常に困難です。
        20年前であればプログラミングの学習は本で勉強するものでしたが、
        今はインターネットのサイトで勉強するのが主流です。
       - プログラミングの書籍の中には、本と同じ内容のものがインターネットに
        アップされているものがあります。これは誰かが違法にアップロード
        しているものではなく、そういう喜捨の文化だからというのが主な理由
        です。本を購入する前にタイトル名で検索してみましょう。
       - プログラミングの書籍が自分のやりたいこと、自分のレベルに合って
        いるかを見極めるのは非常に難しいです。
       - MicrosoftのVisualStudioは、最初に製品版(有料)のページが表示され
        ますが、探せば無料のものも提供されています。
        (今の世の中は基本的に知らない人が損をするようにできています)
       - 本は、書いてある分量がある程度分かりやすいというメリットがあります
        が、インターネットのサイトはそうではありません。インターネットの
        サイトで学習する際の私のお勧めは、サイトの目次をExcel等に書き
        写してしまうことです。また、文字数カウントのアドインをブラウザに
        インストールして活用しましょう。
    c0364169_16575327.png












    ③ デュアルディスプレイが理想
       - プログラミングをする際、IDEの他にブラウザを開いて調べものを
        することが多いです。PCのスペックはそれほど高くなくても
        構いませんが、ディスプレイは2台使えると効率が格段に
        向上します。

    ④ おごらない

       - プログラマの能力として、速くコーディングできる、
        色々な分野でソフトを作成できるといったことは
        あると思いますが、所詮学校の勉強と同じで、誰でもできることです。
        俺スゲーとおもっても周りに吹聴しないのが、後々のためです。
       - プログラミングの学習はできるだけ簡単な言語から始めてください。
        Windowsの場合はC++ではなく、C#やJavaなどから始めるのが
        ベターです。このアドバイスを守れている人は少なく、そのため
        大抵のプログラマが損をしています。
       - プログラミングの学習をできるだけ簡単な言語から始める理由としては
        以下のことが考えられます。
         i. 難しい言語の習得には非常に大きなエネルギーが必要であり、
          習得が容易だといわれている言語でさえ、思っているほど容易では
          ない。
         ii. 言語を習得している途中では成果が全くでないので、心が折れる
          (分かりづらいですが、非常に重要なポイントです)

    ⑤ 他人と比較しない

       - 他人と比較するとつらくなります。自分が決めた目標をクリアできたか
        どうかを気にするようにしましょう。


    プログラミング初心者のためのUNIX入門に続きます


    [PR]
    by tempurature | 2015-07-13 17:56 | プログラミング
    lispは速いのか?
    ※以下は浅学な私なりの回答です。間違ってましたらご指摘頂けるとうれしいです。

    Q. lispって速いんですか?

    A. 遅いです。lispでbashを作ったらpowershellくらいの速さだと思います。lispはJava, D, Adaと同様ガーベジコレクションを実装している言語ですが、ガーベジコレクションはプログラムの起動時にかなりのオーバーヘッドになります。また、共有DLLなどを利用しなければプログラムサイズも増大します。

    ただ、Lispには様々な種類があるので、即応性に優れた実装も探せばあると思います。そのような裾野の広さはJava, C#, Pythonにはないでしょう。

    <追記>
    lispについての面白いトピックです。


    [PR]
    by tempurature | 2015-07-04 15:00 | プログラミング
    ソースコードの貼り付けについて
    Jehoshaphatさんとsp_techさんの記事を参考に、exciteブログのスキンを変えてみました。

    package jp.co.excite.test; 

    いいですね~emoticon-0159-music.gif

    [PR]
    by tempurature | 2015-07-03 23:10 | プログラミング
    プログラミングは難しいか?
    プログラミングをどう習得すればいいかがわからないという話を聞いたことがあります。

    プログラミングを習得するには、プログラミングができる人に相談するのが一番ですが、ここではプログラミングの学習を阻害する要因について考えてみます。


    1. 何から手をつければいいのかわからない

    プログラミング言語には、C, Java, VBA, Javascriptなど多種多様な種類があり、自分がしたいことに対してどの言語を選択するべきなのかがわからないのだと思います。そのようなことに対して、真摯に、包括的に論じた文献を私は知りません。とりあえずCやっとけということなのでしょうか?

    例えば3Dのゲームやタブレットのアプリ、Webアプリなどはプログラミングを習得するのに時間がかかると思いますが、具体的にどのくらいかかるのかをあらかじめ調べておいた方がいいでしょう。

    1ついえることは、未経験者でもソフトウェアハウスに就職すれば、その会社でやっていることくらいは習得できるので、人生は短いですし、独学でやるよりも就職活動に力を入れた方が効率的なのは間違いないです。


    2. 習得したい言語の入門書の内容がわからない

    プログラミングの本を小説のように読むと、わからないと思います。大学の微積分学の教科書よりはやさしいといった感じでしょうか?
     大体、入門書の著者がプログラミング全般に対して不勉強な場合も多々あります。入門書を買う前にインターネットで評判を調べた方がいいでしょう。

    プログラミングの書籍を読むコツは、とにかく書いてあるコードは打ち込んでコンパイルしてみること、です。書籍の内容が文章やコードスニペット(それ単体では実行できないコード)ばかりだととたんに理解度は下がります。

    また、プログラミングの書籍やインターネットの解説をそのまま実行してもうまくいかないことは多々あります。はなから「うまくいかないのが普通」という前提で臨んだ方がいいでしょう。

    また、プログラマは暇ではないので、プログラミングのあれこれについて手取り足取り教えてもらおうとすると相手にしてもらえないと思います。だから、できるだけ自分で解決するクセをつけましょう。プログラミングもテスト勉強と同様、「ある意味」誰でもできますが、簡単ではないのです。


    3. 文法は理解できたが、ライブラリが理解できない

    プログラミング言語の文法についての理解は入門書である程度できると思いますが、ライブラリは文法に比べて膨大なので頭をかかえてしまうことが多いと思います。

    そんな人は、Java, C#, rubyなど、比較的簡単だといわれている言語で同じことをしてみるといいと思います。これらの言語は割と最近にできた言語なので、ライブラリが整理されています。とはいえ、最初は非常に壁が大きいように思えるのではないかと思います。

    わからないものに取り組む際、例えばファイルI/O, 正規表現, 文字コード, XMLパーサなど多々ありますが、1つ取り組んで、わからなければ他のをやる、疲れたら一旦離れるなどして、だましだまし取り組む必要があると思います。


    4. プログラムを作っている途中で手が止まってしまう

    これの答えは「Joel on Software」に書いてあります。プログラムの仕様書を最初に書きましょう。とはいえ、プログラマの中には文章スキルのない人も多いです。本当に悩ましい問題なんです。

    もう一つのやり方としては、ソフト設計の定石を覚えてしまうことです。デザインパターンは抽象的なのであまりおすすめしません。ライブラリがモジュール設計の手本になるでしょう。私のお勧めはSchemeを勉強することです。


    [PR]
    by tempurature | 2015-06-21 19:55 | プログラミング