2007-06-25

21世紀のBASIC

まつもとゆきひろ×結城浩,Rubyを語る:ITpro

なるほどな。得意な分野がずいぶん違う気はしなくもないけど。

自分も

  • end ってなんだよと思ったけど、開くブレースの位置で悩む必要がなくなって今はとてもしっくりきている
    • Emacs で書いているからかもしれない
  • 最初からオブジェクトで統一されているので、Ruby でようやくオブジェクト指向が理解できた
  • メソッド呼び出しがとてもスムーズで、やっとオブジェクト指向が躊躇なく使える感じがした
  • 読んだり書いたりするときに気持ちよくなるような設計を心がけるようになった
    • 書き方として標準のメソッド、ライブラリがとても参考になっている

ただ

  • 初めて本を買わずに習得した言語で、リファレンスのオブジェクト指向どっぷりな解説がつらかった
    • おかげで一生懸命書いて動いて分かったときの喜びは最近学んだ言語の中ではいちばん大きかった
  • ブロックはまだよく分からないです
    • 自分でこれを取るメソッドを定義する必要性があんまりないもんで

てなところもある。

個人的ないちばんの収穫は「気持ちよく書けること1を意識するようになった」こと。これが実はすごくでかい。メソッドが繋がったときに読みやすいか、オブジェクトの名前とメソッドの名前の関係がおかしくないか、といった点を常に意識するようになったのは Ruby の読みやすさ、書きやすさの影響だと思う。2

そういう意味では 21世紀の基本(BASIC)になってほしいと思うことはあるな。自分のコードも他人のコードも気持ちよく読み書きできるに越したことないもの。簡単な作業が不必要に複雑になってしまわないように、短く気持ちよく書けることはとても大切だ。

  1. 「気持ちよく読めること」でもあるんだけど、例えばそのオブジェクトを利用して、自分を含めたユーザーが何かを書こうとしたときに、できるだけ気持ちよく使えることを意識している。あの、言っとくけど意識してるだけで実践できているとは言ってないからね。 

  2. もちろん他の言語でもある程度やればそういうスタイルになる可能性はあるんだけど、Perl も PHP もオブジェクトを Ruby ほど端的に書けないし、Perl はベストプラクティスという言葉が定着しているけど、PHP にはそう呼べるようなものもないし、どうしてもそこまでたどりつくのに時間が掛かるような気がする。 

About

例によって個人のなんちゃらです

Recent Posts

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Document SVG AsciiDoc Pandoc DocBook Develop Jekyll macOS Node.js Vite Heroku Transformer AI Data Cloud Wasm