• ベストアンサー

perlのプログラミングセンスを磨くには

C言語とperlを独学し、1000行程度のperlのコードを書けるようになりました。 ですが自分の書いたコードは 似たようなサブルーチンが何回も出てきたり、後から付け足したコードをあちこちにツギハギしたり、いわゆるグローバル変数を多用したりと、自分で見てもあまりセンスが感じられません。 そのため見た目に分かりづらく、メンテナンスもしにくくなってしまっています。 他の方が書かれたコードをダウンロードして見てみたりしていますが、なかなか上達できません。 センスのいいコードを書くには、個々の関数の働きがどうこうよりも、もっとマクロな視点で全体の構造やメンテナンス性に注目すべきだと思うのですが、この観点でプログラミングを解説したサイト、あるいは書籍をご紹介頂けないでしょうか。 よろしくお願いします。

  • Perl
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • hara_peko
  • ベストアンサー率28% (11/38)
回答No.1

私自身は読んだこと無いのですが・・・ 「Perlプログラミング救命病棟」 メーリングリストか何かで薦められていたのをみたことがあります。

参考URL:
http://www.7andy.jp/books/detail?accd=31587608
schwer
質問者

お礼

ご回答ありがとうございます。 なかなか興味深い書籍ですね。 診断によってプログラミングの質が客観的に把握できるのもいいです。 取り寄せてみます。

その他の回答 (2)

回答No.3

プログラミングPerl 第3版 http://www.oreilly.co.jp/books/4873110963/ http://www.oreilly.co.jp/books/4873110971/ この本はちょっと前のバージョンのPerlについて全部書いてありますので、是非ともあった方がいい本なのですが、最新の Perl 5.8 については書いてなくて、値段が妙に高い(2冊で1万円超える)のが玉に瑕といった感じです。ただ5.8との違いはあまり大きくないと思うので足りないことについてはコマンドラインから perldoc で英語ドキュメントを出して読むかインターネットで検索して英語または日本語訳されたドキュメントを探せばいいのではないかと思います。

schwer
質問者

お礼

ご回答ありがとうございます。 本屋に行って立ち読みしてみましたが、そのボリュームの多さに圧倒されてしまいました。 読み解くだけでもかなりのパワーが必要になりそうですが、財布と相談しつつ購入を検討してみます。

回答No.2

まず、グローバル変数を多用していると言うことで、オブジェクト指向による記法をマスターされていないものと想像します。 昔CGIによって広まってしまった古き悪しきperlコードからの脱却は、「use strictはかならずつけ、perlのOOPの手法を学ぶ」がまず必須です。OOPに関しては、以下のドキュメントの和訳はいかがでしょう? http://perldoc.jp/docs/perl/5.8.0/perltoot.pod 後、perlでの部品化の本は少ないので、javaやデザインパターンの書籍が役に立つと思います。それらをperlでどうコーディングするかを考えると、一気に上達するはずです。 オブジェクト指向は万能ではありませんが、よい部品化のヒントには十分なりうると思います。

schwer
質問者

お礼

ご回答ありがとうございます。 確かにオブジェクト指向による記法はマスターしておりません。 やはりOOPの手法が私には必要な様ですね。 参考URLの内容を読解しつつ、デザインパターンの書籍を探してみます。

関連するQ&A

  • プログラミングのセンス・技術とは.

    こんにちは.はじめて書き込みするtoroimoです. 私は,理工学系の大学院の修士課程に在学しています. 来春から社会人です. プログラミング暦は,研究に取り組んでから2年半たちます. 使用言語はCです. 最近,自分のプログラミングのセンスというか技術について 考えてしまいます. ある権威者の人は,プログラムは慣れであり,プログラミングは芸術といいます. 芸術であるがいえに万人が優れた美しいコードはかけないと… それを聞いてはじめは落胆しました. けれど,その後は少しでも優れたコードを書けるようにと 書籍・サイトを探り読んでいます. 私は,Cに関する初級本 改訂 新C言語入門 シニア編 など4冊,アルゴリズムに関しては,1冊. また,日経ソフトウエアやC_MAGAZINEなどをよんで知識の習得に 勤める努力はしています(実力として初級はクリアしてると思うのですが.). しかし,実際研究でコードを書くとなると アルゴリズムに悩む時間ばかり費やし手が止まってしまう状態です. こんな私に社会で働いている人(SEやプログラマ)や 学生の方から御叱咤・御忠告を賜りたいです. どうかよろしくおねがいいたします.

  • プログラミング言語について

    プログラミング言語にはさまざまなものがあり,C,COBOL,CASLII、C++,JAVA,VISUALVASIC,PERL等があるようですが、家庭用PCにおいてこれらの各言語はどのような働きをしているのでしょうか?自分で使っているPCのことぐらいはできるだけ知っておきたいので、誰か詳しい方おしえてください。

  • 効率的なプログラミング

    データ処理や数値計算のために簡単なプログラミングをしている者です。大体,一般的な入門書レベルの内容をマスターしている程度と考えていただければ良いと思います。 それで,プログラミングで重要なことは「より単純に,より速く」というコードを書くことが1つあげられると考えていますが,そういったより効率的なプログラミングをするために良い参考書などないでしょうか? 例えば,「こういうコードの書き方は良くないですよ」とか「このように記述することによってより高速に動きますよ」といったような,初心者がはまりやすい罠とか,より上達するために良い書籍ということです。 こういったことは,原則としてどの言語でも共通なことであると認識していますが,全く分からない言語の説明を受けても理解できないので,PerlかCかVBのいずれかの言語でお願いします。 あと,頼みついでに1つ教えて欲しいのですが,同じ繰り返し処理を行う場合,(例えばCでいうところの)for構文とwhile構文の使い分けというのがイマイチよく分かりません(それぞれのメリットとデメリットが分からないということ)。基本的にはどちらでも同じことができますが,私はほとんどfor構文しか使わないのです。

  • (visual)C++から(active)perlを呼ぶ

    Vista sp1 64 bit, visual C++ 2008 express, active perl 5.1を使用しています。 しばらくの間active perlを使ってテキスト処理のスクリプトを書き溜めてきました。 最近になってC++ を使うようになり、今後はC++中心にプログラミングをしていこうと思っています。 ただ、これまで書き溜めたperlスクリプトをどうにかしてC++で再利用できないかと思っています。またテキスト処理に関してはC++よりやはりperl が優れていると感じ、C++ のプログラムを主体として必要に応じてその中にperlのスクリプトを組み込みたいと考えています。 たとえばテキストファイルを読み込みや最終的な出力するのはメインのC++で書き、各行のテキスト処理はC++からperlのサブルーチンにデータを渡して処理するというような形です。 perlのドキュメントを見る限りではperlembedがこの目的に適しているようでした。 http://perldoc.jp/docs/perl/5.10.0/perlembed.pod サンプルコードなども書いてあるのですが、どうやらunix環境、gcc(?)の例のみのようです。 windows環境でvisual C++ とactive perlを用いて C++からperlを呼び出すようなプログラムを書くにはvisual c++の設定をどのようにしたらよいでしょうか?

  • プログラミングの勉強と理解

    私の職種はデザイナーです。CG、映像、Webのデザインをします。2D、3D、編集などします。 しかし仕事の大半はプログラミングです。C++、C#、PHP、javascript、データベース(MySQL)がほとんどです。 Webアプリを自分一人で作ってもいます。PHPがメインでjQueryとデータベースを使った非同期で動くアプリです。デザイナーなので見た目はプロっぽく作っています。 そしてWebアプリを支援するツールをC#で作っています。 本職ではC++で大規模なアプリの一部の開発をしています。 CGツールのAPIなども使ってソフトウエアのカスタマイズもします。 これでもデザイナーなのですが、やはり本職のプログラマーの足元にも及びません。 ここからが本題です。 私は他人が作った環境やライブラリを使っているにすぎず、Webアプリの作り方やPHPやそのフレームワーク、jQueryなどの使い方などはWebで見て見よう見まねでツギハギしているだけです。 20代・30代の現役プログラマーさんたちは遥か上を行っています。 ブログやSNSで小難しい言語の使い方の解説をされている方も大勢いますし、書籍を出せるほどの知識を持った方も多いです。 自分はもう30代後半なのに、他の方の知識を借りてコードをツギハギしているだけで嫌気が差してきました。 思考がプログラム脳ではなく、フレームワークを作れるでもなく、jQueryのようなものを作れるわけでもなく、かといってC言語の講習会はメモリ管理とか難しすぎて理解できませんでした。 クラスや継承など比較的簡単なところはわかりますが、他人が作ったテンプレートとか、もう見ても何がなんだかわかりません。 どのようにしてプログラム脳にもっていけばいいのでしょうか? そもそも初歩から勉強したわけではなく、なんとなく業務的にやってたらプログラミングをやるようになったのできちんと学習ということをやっていないのが原因のような気がします。 もう30代後半なので読解力も衰えてきていると思いますが、プログラミングスクールのようなところに通って一から勉強したほうが良いのでしょうか? 私の書いたコードは他人に見せれるようなものではありません。 自分で作るアプリとかはクラスとかほとんど使っていませんし・・・(本職のアプリでは使っています)。 学習方法について何かアドバイスがあればどうぞよろしくお願い致します。

  • プログラミングの入門者・初心者レベルを超えられている方に質問

    プログラミングの入門者・初心者レベルを超えられている方にお聞きしたいのですが、 「入門書に書かれているコードを記述し、さらに自分なりにコードを改変し、改良を加えていく。」という手順が成り立たない(見当つかない)ものに対し、どのように対応(勉強)されてきて、現在のレベルまでたどり着いたのでしょうか? 「こんなものがつくりたい、ここをこうしたい」 というアイデアはたくさんあるのですが、それを実現するにはどのようなコード記述をしたらよいか、実際にいろいろな入門書を読んでみても見当もつかない場合が多々あります。 基本的に、長年勉強をし続けなければ難しいのでしょうが、入門書どおりのコード記述ではなく、こういうのをやるにはどうしたらよいのか?という視点での勉強方法など、良いアドバイスがありましたら、ご教授願います。 最近は「逆引き大全」みたいな書籍もいろいろ出版されていますが、そういう本を見てみても、自分がやりたいことってなかなか載ってないものですよね。。。

  • フレームワークを使って学べること

    私はウェブアプリを作成するためにExt JSやRoR、DjangoやSymfony、CakePHP、Zend Frameworkなどのフレームワークを使ってきました。 これまではフレームワークを使わないプログラミングも行ってきていたのですが、作りたい物を綺麗に早く作りたいので、最近はフレームワークの力をいつも借りてしまいます。 ですが、フレームワークは日進月歩しておりますし、個々のフレームワークについて学んだところでそれが将来役に立つか分かりません、フレームワークを使った開発ばかりしていていいのかと最近思っています。 プログラミングの上達という観点から見るとフレームワークを使うのは避けた方が良いでしょうか? また、フレームワークを使わざるをえない状況でも、そこから何か学び取れるようなことはあるでしょうか?(抽象化の手法など) ご助言いただけると嬉しいです。

  • コンピュータープログラミングについて質問です。

    よろしくお願いいたします。 私は、学生時代にC言語とVBを勉強して自分にはプログラミングは 向かないとあきらめて、徐々に疎遠になり、挫折しました。 自分がプログラミングをやめた遠因に 在籍していた学校で 自分がMS-DOSプロンプト画面に、文字コードで■や○で表示して なんとなく、動くプログラムを作っていたときに 後々、気づけば、その人と比べること事態が間違いだったのですが、 その後輩は、学校の特待生で 小学生の頃から、プログラミングを行っていて、学生の1年次に 自分で、企業から請負で2400円時給換算でプログラミングを納品していて さらに、APIとかに直接アクセスして、コンピュータープログラミングゲームで 市販されていてもおかしくないレベルのソフトをつくり、 多分、私も誘われたのですが、、コミックマーケットなどで、絵を描いてくれる友達などと ともに、オリジナルゲームを作ろうなどといって、将来的には会社を自分で興したいといっていた 後輩と比べて、他にも、ダブルスクールで大学時代にハードをいじっていたとか 高校卒業と同時にデザイン系を学んでいてスキルアップのために学校にきました。 とおっしゃる方々がいたのですが、 本当にあっさり、基本情報処理の一種をうかって 匿名掲示板などでもあの試験簡単だぜなどといわれているのを見聞きし、 さらに、2年間の学生自分に第2種基本情報処理試験を合格すれば良いと 聞いていたのに、その方々は、1年時の後期試験で受かられてしまい 私は慌てふためき、完全に空回りしてしまい、 元々、私は勉強のできない人間の典型例なので(現在は本の少しはましになったと思います) 枝葉末節にこだわりすぎて、さらに、はじめから大きいプログラムを作ろうとばかりしてしまい、 自分が完成させたプログラムは、MS-DOS画面に文字コードを利用して動きがあるように 見える、テニスと、後は、適当に作って、自分用に作ったHTMLとCSSのWEBページだけです。 HTMLはJavaスクリプトなどを使っていないし、デザインにこってFlashなどを使っているわけでも ないので、作品というか完成貧としては、これらのしょぼい作品だけです。 やはり、自分に一番足りないのは、無駄を省いた、本当にプログラミングに費やした時間と 完成品を作り実際に動いたプログラムソフトウェアーの数だと思うので、 何を作りたいか明確にすればよいと思うのですが、 そもそも論として、 誰かに、何を作ったらよいですか?と聞いている時点で、プログラマー失格ですよね、、、 でも、教えてください。 実用的なプログラムだと、 エクセルのマクロとか もしくは、WHPなどを勉強して見たいと考えています。 そもそも論として、 Windowsベースのソフトを作るかどうか、ドライバーソフトやIOインターフェースを 制御したりそもそも、OSを作ることもできるC言語を2年ぐらい勉強しただけで、 なんでできないんだろうなどということはうぬぼれもはなはだしいということですよね。。。 後、要領ですよね、、、 サーバーを立ててデーターベースを作って管理するなどにも興味があり、 昔、全文検索システムNAMAZUさんやLinuxについても調べた事があり、 Perl、Rubyなども勉強したいと考えたのですが、 学生時分は、広く浅く知識を集めただけで終わり、 浅さのレベルが本当に浅かったために、プログラムを挫折しました。 現在も、この文章をここまで、書いた時点で、プログラミングを作るのが大変そうだなーと 思うようになり、プログラム大変そうだなー、やっぱりやめようと考えるようになりました。 なので、ものぐさな人間でも、結果が分かりやすいプログラミングの勉強法、 プログラムを作り出したら完成させる、ということを前提に、考えると、 いまさら、iアプリか、今はやりの、スマフォ、iPhone Android向けに、 ソフトを作るのが良いでしょうか? 何が言いたいのか支離滅裂になってしまったのですが、 どのソフトウェアーがお勧めか実際にプログラミング、プログラムを趣味にされている方の アドバイスをよろしくお願いいたします。

  • プログラミングのセンス

    自分はコンピューターのプログラムなどしたことのない者なのですが 絵の才能がある→絵がうまい サッカーの才能がある→サッカーがうまい 楽器の才能がある→演奏がうまい などは納得するのですが、 プログラムの才能がある→プログラムがうまい? と言えるのでしょうか。基本的にコンピュータに実行させるので誰がやっても変わらないと思うのですが。

  • プログラミングのセンスをあげたい

    C、C#、JAVAを勉強してきたのですが自分のセンスの無さに 愕然としています。授業ではJAVAで電卓を作っているのですが正直1人でできそうではありません。 それ以外にも自分で、仕様書などは作らずにオブジェクト指向言語で作っているのですができません。 最近作って挫折したのは小遣い帳です。 Excelで作ることは出来ると思います。 あと家にSQLサーバーが無いため、配列を用いてファイルに書き込むと言う手段を考えています。 プログラミングのスキルをあげるにはどうすればいいのでしょうか?

    • ベストアンサー
    • Java

専門家に質問してみよう