class: title, smokescreen, shelf, no-footer # Perl入学式in千歳の御紹介 <div class=footnote> <small> 2022/05/21 version (初出); <A HREF=https://lectures.fml.org/slides/lang/perl/env/>Perl演習環境の構築</A>の合間に、 この御紹介(本スライド)とか「こぼれ話」(与太話?)をします </small> </div> --- class: compact # 最初に - ハッシュタグは`#Perl入学式in千歳`です。 よろしく、おねがいします。 - 全国のPerl入学式、まちライブラリさんの営業もかねて、 いろいろハッシュタグをつけてあげると、みんなうれしいんじゃないかと思います ``` [例(全部入り)] #Perl入学式in千歳 #Perl入学式 #まちライブラリーちとせ #cist ``` - イベント履歴としてtogetterにまとめていますので、 備忘録として、みなさん、じゃんじゃん書いてください:-) - [togetterまとめ](https://togetter.com/t/Perl%E5%85%A5%E5%AD%A6%E5%BC%8Fin%E5%8D%83%E6%AD%B3) --- class: compact # Perl入学式? <div class=footnote> <small> https://www.perl-entrance.org/ </small> </div> 公式にある紹介文が以下の文章です <small> Perl入学式は、2012年に大阪で始まったプログラミング初心者や入門者向けの勉強会です。 プログラミング言語「Perl」を題材に、1年を通して、環境構築から変数やデータ構造の取り扱い、そして簡単なウェブアプリケーションを作成するまでの学習を行います。これからプログラミングを初めたい、という方でもきちんと内容を理解できるように、基礎をしっかり身につけながら、実用的なレベルまで進むことがコンセプトです。 勉強会ではスライドに写した教材を講師が解説し、受講生はその解説にもとづいた練習問題を自分のパソコンで解いていくという形式で進められます。困った時には、複数人いるサポーターに聞けば疑問が解決するよう配慮しています。 </small> --- class: compact # Perlとは? <div class=footnote> <small> (脚注1) 中2病理論は正しいと思います。 中2病理論=「あなたが中学生の頃みていたアニメが最高のアニメです」 だから絶対に世代間で意見があったりしません:-) (脚注2) プログラミング言語でも中2病理論はあると思います。 初期のころに知ったいくつかの言語の一つ(初恋?)の影響は強いです </small> </div> - Unixというオペレーティングシステム(以下OS)上の便利機能をすべて合体させた夢の言語です - テキスト処理が猛烈に得意です - コンピュータで処理するほとんどの仕事はテキスト処理なのでPerlは適しています - Unixで生活する人には便利でたまりませんが、他のOSでは有り難味がわからないと思います - 商用インターネット初期に動的なWWWを作るにはperlだ!と流行したので有名ですが、 (個人的には)かなりの勘違いで流行したと思っています --- class: compact # 私論: Perlを勉強して意味があるか?(1) <div class=footnote> <small> (脚注1) 前頁でも言いましたが、 Unixで生活する人には便利でたまりませんが、他のOSでは有り難味がわからないと思います (脚注2) 各自の主力言語というのはあると思うのです。 Perlを主力言語として推奨するわけではありません (いくら私でもすすめない) </small> </div> - 多くの言語を知っていて損はしないし、比較するのは楽しいです - スクリプト言語の代表例の一つでもあるので後続の多くの言語に影響を与えています。 そのため「Perlに由来しているのか!」という発見があると思います。 - たとえば - PHPなど、もろにPerlにしか見えません (PHP=動的なWWWを開発する主力言語) - Javascriptの`$`とかもPerl由来なのかな? - 宝石名仲間であるRubyはPerlのリスペクト - ほぼ同時代のPythonは意識してると思いますよ。 むしろPerlからものすごく離れるにはどうするか?という負の方向性がある気がするけど --- class: compact # 私論: Perlを勉強して意味があるか?(2) <div class=footnote> <small> </small> </div> - Perlといえば正規表現が有名で、デファクトスタンダードです。 これだけでも学ぶべき理由になります - Pythonは途中で降参しました(独自開発をあきらめ、正規表現をPerlと合わせました) - C言語のソフトウエアで(便利な)正規表現を使うときは、 PCREというPerl互換ライブラリを使うので、 (Perl本家は何も関係ありませんが)やっぱりPerlです --- class: compact # Perl演習環境を構築してください - Perl演習環境の構築は[こちら](https://lectures.fml.org/slides/lang/perl/env/) - ダウンロードで時間がかかったりするので、 その待ち時間に、 このスライド「Perl入学式のイントロダクション」とか「こぼれ話」(与太話?)をします --- class: compact # 動作確認 (せっかくなので、これくらいやりましょう) <div class=footnote> <small> </small> </div> hello.pl ファイルの中身を次のように書き換え、保存してください ``` print "hello world\n"; ``` ターミナルで以下の呪文を実行してください ``` perl hello.pl ``` 次の文字が出ましたか? ``` hello world ``` --- class: compact # おまけ: せっかくなので、お?という話 <div class=footnote> <small> (脚注) developer tool = Chromeの場合「右上のメニュー -> その他のツール -> デベロッパーツール」をクリック。 表示された右側の>部分でJavascriptを実行できます </small> </div> nazo.plを作って実行してみよう、こたえは何になるでしょうね? ``` print 1 + "1"; ``` ブラウザの developer tool で実行すると**11**って表示されるのでやってみてね。 さて、どういうことでしょう? --- class: compact # おまけの答え: <div class=footnote> <small> (脚注) いいじゃん、好きなように書けばさ〜 by Larry Wall ということで、まとめておきますね </small> </div> - 第2回には**変数**をやるのですが、その頭出しを少しやっている感じです。 それに加えて、いろんな言語があるよね〜という紹介です (どちらが正しいとか言えないよなぁ) - 解釈 - 1 = 数字 - "1" = 文字 - 各言語の挙動 - perl ... 数字に自動変換して、数字の 1 + 1 = 2 - Javascript ... 文字に自動変換; 文字の1と文字の1を「足す=連結する」と解釈して11 - Go言語 ... invalid operation: 1 + "1" (mismatched types int and string) - C言語 ... なんか、あうんの呼吸で自動変換をしてくれているみたい <br> (結果は出力の指定しだい;ただし gcc, 厳しいチェックオプションなし)