「Haskell」を含む日記 RSS

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

2020-05-21

初心者向け】プログラミング言語人気TOP20簡易解説

概要

プログラミング経験からプログラミング勉強してみたい、でもどのプログラミング言語をやればいいのかわからない」というような悩みを聞くことがあるので、https://redmonk.com/sogrady/2020/02/28/language-rankings-1-20/ に載っている人気の言語TOP 20について、未経験者が最初に学ぶのはどの言語が良いかという観点簡単解説してみます

対象読者はプログラミング経験者なので、なるべく難しい言葉を使わないようにしたつもりです。また、正確性よりもわかりやすさを重視しているので何かしら間違っているかもしれません。ご留意ください。


ランキング

1位 JavaScript

Webブラウザの上で動くプログラミング言語。元々ただの文書しかなかったインターネット世界に、グリグリ動くページを作りたいという欲求により生まれた。JavaScriptのおかげで今のWebページグリグリ動きまくりである

元々HTMLちょちょっといじる為だけのものだったが、どんどん進化を続けて今は一つの超人プログラミング言語である。今ではブラウザ上でなくても普通に動かせる(Node.jsという)ので様々な用途で使われている。

ブラウザ上で動くプログラミング言語基本的JavaScriptしかないので、JavaScriptはすべてのWebプログラマが学ぶ必要があると言っても過言ではない。

ちょっとしたプログラムを書いてすぐブラウザ上で動かせるので楽しい。そういう点ではプログラミング入門に適していると言えるかもしれない。


2位タイ Python

機械学習を始めとしたデータサイエンスの分野で激烈に人気のある言語理由としてはNumPyとかTensorFlowのようなライブラリが充実しているというのが大きく、資産がたくさんあるのでこれからも使われ続けるであろう。

Webも作れるが、日本ではWeb系の求人は少ない気がする。

言語としては、誰が書いても簡潔で読みやすコードになる傾向にあり、小さいプログラムを書くにはいい感じである米国ではプログラミング教育Pythonがよく使われているという話も聞くし、初心者プログラミングを始めるのにはいいのかもしれない。

将来AIデータサイエンスをやってみたいと思うのであればPythonから始めましょう。


2位タイ Java

ランキングでは常に一位に近い順位をつける言語Javaができた当時は色々と革新的だったらしく、組み込み業界からWebまで流行りまくっていた。今でもその名残か使っているところは多い。過去資産プログラマの数が多いのが一番の理由だと思う。AndroidアプリJavaで書く(もしくはKotlin)。

実行速度が速く、また下位互換性がしっかりしているので過去に書かれたコードが新しいマシン上でも動きやすいのが長所短所としては、歴史ある言語下位互換性を保っているため文法が古い感じがする。タイプ量も多くなるし、学習コストJavaScriptPHP, Ruby, Pythonあたりに比べると高い。

正しく使えば強力な言語だが、日本のクソSEもどきは全員(自称JavaエンジニアであることがJavaが毛嫌いされる理由の一つになっている[要出典]。いわゆるGAFAJavaをかなりヘビーに使っているので要は玉石混交ということである

Androidアプリ作ってみたいというならJavaからはじめるのはアリ。


4位 PHP

Webページを作るためだけに生み出された言語プログラマの数が非常に多い。日本求人が一番多いのはJavaPHPであろう。

初心者でもとっつきやすく、すぐに動くプログラムを作れるので入門に使われることも多い。学習コストの低さはトップレベルであるしか基本的には古くてダメ言語とみなされており、PHPで作られたWebサービス脆弱性が多いという都市伝説もある。真実は闇の中である

近年のバージョンアップ比較的良い方向に向かっている(と個人的には思う)ので、選択肢としては意外と悪くないかもしれない。


5位 C#

Microsoftが生み出した言語で、.NETというプラットフォームを使ってWebサービスを、Unityというゲームエンジンを使ってゲームを作ることができる。

最近有名なのはUnityで、今やほとんどの3Dソーシャルゲーム(の一部分)はUnityで作られている。そう考えるとC#プログラマ結構いそうだし将来もある程度安泰かもしれない。もちろん.NETも広く使われている。

ただし.NETUnityも触らない人にとっては基本的に縁のない言語である

なんかゲーム作ってみたいかもなーと思う人はC#から始めてもいいんじゃないでしょうか。


6位 C++

C言語に色々な機能を足しまくってできた巨大な迷宮のような言語言語仕様は複雑怪奇だが実行速度は全プログラミング言語中でも最速レベルなので、パフォーマンス重要な開発において使われる。アプリサービスというよりは、それらを作るためのライブラリプラットフォームなどを作るときに使われることが多い。Web系の会社でいうとGoogleなどは主にC++を使っている。

基本的には初心者が触る必要はない。競技プログラミングを極めたいとかならC++からはじめてもいいかもしれない。


7位タイ Ruby

このランキングの中で唯一、日本人によって作られた言語。作者のまつもとさんは世界有名人である。ちなみに島根県出身、在住。

プログラミングを楽しくすることがモットーらしく、確かに書き味は良い。また作者が日本人なこともあってか日本情報が多く、情報収集という点ではとてもやりやすい。

Ruby on RailsというWebサービスを作るためのフレームワーク世界的に大ヒットしたため、必然的Ruby知名度も上昇した。少し前まで日本Webスタートアップは猫も杓子もRuby on Railsといった様相であった。今は少し落ち着いたようだが今も人気は根強く、Webプログラミングスクール等ではだいたいRuby on Railsを教えているとかいないとか。

Webに興味があるのならRubyから始めるのが一番無難選択肢と言える…のか?まあ悪くはないと思う。今でも需要は多い。スクールに行きたいのであれば黙ってスクールカリキュラムに従いRailsをやりましょう。


7位タイ CSS

これは他の言語とは毛色の違う言語である。というかCSSプログラミング言語と呼んでいいのだろうか?

CSSHTMLを装飾するためのものである。字に色をつけたり、背景を変えたり、レイアウトサイズを変えたりするのは基本的CSS役割である

すごく大雑把にいうと、HTMLで表示する内容(文章画像)を定義し、CSSでその見た目を整え、JavaScriptで動きをつける。というのがWebサービスの”見た目”を作るやり方である

なので、Webに興味があるのであればある程度はCSS知識必要である。が、これ単独で学ぶようなものではない。Webサービスを作る時についでに調べて少しずつ覚えていけば良い。


9位タイ TypeScript

TypeScript比較的新しい言語で、JavaScriptさら拡張したものであるMicrosoftによって開発されている。

プログラムにはデータの型(Type)というものがある。例えば「1」や「2」は数値型、「あいうえお」は文字列型といった具合である。大まかに言うと、この「型」に対して厳しい言語は型チェックによりバグの混入を防ぎやすいがプログラムを書くのが大変、というかコード量が多くなる。型が緩い言語サクサクかけるし短く書けるがバグを生みやすプログラマの力量が問われる。ランキングの中だとJavaScript, Python, PHP, Ruby, Perlあたりは緩く、Java, C++, C, Swift, Go, Kotlinあたりは厳しい。

そんな中、世で広く使われているJavaScriptの型チェックが緩すぎるのでもっとちゃんと型をつけたい、そんな要望を叶えるのがTypeScriptである基本的JavaScript理解している人間が使うべき上級者向け言語というのが現状なので、初心者が始めるには適していない。

ただしこの先主流になっていく可能性は大いにあるので、どこかのタイミングで勉強してみても損はしないと思う。


9位タイ C

C言語基本的OSを作るための言語であるOSというのはWindowsとかmacOSとかLinuxといったもので、マシンを動かすための基盤となるソフトウェアであるAndroidスマホにはAndroid(という名のOS), iPhoneにはiOSが載っている。コンピュータ基本的OSがあって初めて動かすことができ、OS提供する機能を使ってブラウザスマホアプリなどを動かせるのである

というわけで、初心者が学んで実用的なものではない。ただしC言語というのは世の中の様々なものの基盤になっており、他言語文法C言語から拝借しているものが多い。例えばC言語をある程度勉強していればJavaPHPなどはなんとなく雰囲気で書けてしまったりする。

そういうわけで、コンピュータサイエンスをこれからちゃんと学んでいきたいという人(大学生とか)はC言語から始めるのもいいと思う。ちなみに筆者は初めて書いた言語はCであるが、意味理解できるまでに2年かかった。才能がないとこうなるので注意。


11Swift

SwiftAppleによって作られたAppleのための言語であるiOSアプリiPhoneアプリと言い換えても良い)を作るためだけに存在している。

言語自体は他と比べて新しいため文法機能イケてる雰囲気があるので基本的はいいのだが、iOSアプリ以外で使っている人は多分世界で5人くらいしかいないと思う。なのでiOSアプリに興味がない人はやめておきましょう。iOSアプリを作りたいあなたは他に選択肢はない。Swiftをやりなさい。


12Objective-C

Swiftが生まれる前はiOSアプリを書くためにObjective-C必要だったため、多くの人がこの言語を使っていた。が、今はSwiftがあるので、古くからあるObjective-Cアプリメンテナンスする時以外に使う機会はない。名前すら覚える必要がないので存在を忘れてしまって構わないが、これだけ順位が高いということは多くの企業がいまだにObjective-Cで開発し続けているということであり、ニッチ需要はこれからも残るのかもしれない。


13位タイ Scala

Scala関数型言語と呼ばれる言語の一つ。Javaの親戚みたいなものなのでJavaとの連携が容易であり、上手く使えば性能も出るしコード量も少ないしバグも少なくて最高、な感じらしい。が、その分難易度が非常に高いので初心者が手を出すものでは絶対にない。どんなに早くても他に二つは言語を覚えてから勉強しましょう。Javaを覚えてからやるのがベター


13位タイ R

R言語データ解析用のプログラミング言語である

正直ほとんど書いたことがないのでよくわからないが、ビッグデータというワード流行りだした頃はデータ解析用途でかなり流行っていた。その後機械学習AIブームが来て、今でも現役で使われてはいるがPythonがどんどん勢力を拡大しているので少し目立たなくなってきた、というのが個人的な印象である。まあプログラミング初心者最初にやるようなものではないことだけは確かである


15位タイ Go

Go言語比較的新しいGoogle製のプログラミング言語で、Googleのように巨大なシステムでの使用目的に作られたものであるしかし実際には様々な企業が利用しており今一番勢いのある言語と言ってもかもしれない。

他のプログラミング言語の良い点や悪い点を参考に設計されており、実行速度の速さと生産性プログラムの書きやすさ、読みやすさ)を両立できるような言語になっている。ただし、機能を増やすのではなく本当に重要機能だけに絞るという思想があるようで、他の言語に慣れていると機能の少なさに不便を感じるかもしれない。

学習コストが低いという点では最初に学ぶ言語として適しているかもしれないが、GoだけでWebサービス等をサクッと作れるのかというと微妙なので、アウトプットを出しにくいというのはあるかもしれない。

二番目や三番目に学ぶ言語としてはオススメ


15位タイ Shell

シェルというのはテレビなんかでハッカー的な人間PCを開いて謎の黒い画面に白い文字を打ち込んだりするアレである説明としては正確ではないがまあ大体そんなもんである。何が言いたいかというと初心者最初に学ぶとかそういうものではない。しかし実際に開発の仕事をやるとシェル知識はあったほうがいいし、シェルに多少詳しくなるとPC上でテキスト操作をしたりファイルをいじったりというのが便利にできるようになる。ただし(通常は)極める必要はない。

Shellと言っても実際にはbash, csh, tcsh, zshなど色々あるのだがそれらをひとまとめにしてShellとなっているようだ。


17PowerShell

PowerShellは上のShellの親戚みたいなもので、ShellがMacLinuxで動くのに対しPowerShellWindowsで動く。そんだけである。あと正直あまり知らない。


18位 Perl

ランキングの中ではかなり昔からある言語で、サーバーと呼ばれるマシンには大体Perlが入っている。そのくらい市民権を得た超有名言語で、C言語C++で書くほどでもない小さなプログラムはとりあえずPerlで書く、というくらいには広く使われていた。インターネット初期はほとんどのWebサイトはPerlで書かれていたとかいないとか。PHPなどの登場はその後である

今でも広く使われてはいるが、RubyPythonPerlの後継的な位置付けであるため、初心者が新しくPerlを学ぶメリットというのはあまり思い浮かばない。何か特定目的があるのであればいいと思う。


19位 Kotlin

Kotlin簡単に言えばBetter JavaであるJavaをもうちょっといい感じに書きたいという気持ちで作られた言語で、Scalaと同じくJavaの親戚のようなものである

ランキングの中ではSwiftと並んでかなり新しい部類。AndroidアプリKotlinで書けるようになったことがきっかけで人気が爆発的に上昇、今ではWebの開発にも使われていたりする。

とは言えまだまだ新参者といった感じで、ドキュメントなどの情報も他の言語に比べると物足りないので初心者には厳しいかもしれない。

言語自体はとてもいい感じなので、もう少しコミュニティ成熟してくれば最初に学ぶ言語選択肢として有力になるかもしれない。


20Haskell

HaskellScalaと同じく関数型言語であるScalaJava的な書き方でも動くの対し、Haskellは「純粋関数型言語」と呼ばれ、ランキング中の他の言語とは一線を画した書き方になる。どう考えても初心者にはオススメしない。少なくとも他に二つは言語マスターしてからやりましょう。


総評

なんとなくWebに興味がありそうならJavaScriptRubyもしくはPHPAndroidアプリに興味があればJavaiPhoneアプリに興味があればSwiftAIデータ分析に興味があればPython3Dゲーム開発に興味があればC#。この辺りをやりましょう。

特に目的がないのであればフィーリングで選んで大丈夫ですが、やめておくべき言語というのはあるのでその辺だけ参考にしてもらえれば。

なお筆者はただのヘボプログラマであり、大好きな記事http://www.mwsoft.jp/column/program_top10.html) の現代版かつより初心者向けなものを書いてみたいと思ってこの記事を書きなぐった次第である。あまり真に受けないよーに。

anond:20200521111256

プログラミング教育って、パラダイム命令型に偏ってますね。

宣言型も教えないとバランスが悪い。

以前ならScheme、今ならHaskellOCamlがいいかも。

2020-04-19

[] [増補改訂関数プログラミング実践入門

コロナ自粛勉強中。以前買ったHaskell本を読み直している。落ち着いて読めば結構理解できる。

https://gihyo.jp/book/2016/978-4-7741-8390-9

この本の概要

現場の方々に向け,関数プログラミングエッセンスを厳選解説した入門書

関数型言語Haskellを用い,基本からJava 8/C/C++/Python/JavaScript/Rubyをはじめ各種命令言語との比較オススメの開発/設計テクニック等を平易に解説

改訂版ではGlasgow Haskell Compiler 8ならびに新機構のStackage/stackへの全面対応関数型言語由来の他言語機能解説章(第8章)の新設(Swift/Go/Rust/C#等の例も紹介)をはじめ実践開発に役立つ解説を増強し,関数型言語でも命令言語でも活かせる「使える基本」を凝縮しました。

こんな方におすすめ

2020-03-26

anond:20200326063804

なぜ Haskell 無謀って考える?因みにカレーは大好きです

anond:20200326064725

Basic

学生の頃「当研究室ではデバイス制御するのにN88Basicでやってる」と言われ習得。その後VBVB.netに移行

PHP

なんちゃって投稿システム自作するとき習得。いまでも年1回投稿システムは使っているが、セキュリティ的に大丈夫なのか?あのとき情報部署担当者PHPの新しいバージョンSQLサーバーインストールしてって頼んだら、わけのわからない理由で拒まれ、それがトラウマになってそっち系趣味は止めた。

R

職業統計解析とかやるときあるので・・今までは商用ソフトでやってきたが、最近つくづく嫌になる。Win用だし・・

マクロの類

数式処理ソフトマクロ(一応関数型プログラミング言語と称しててHaskell類似?)やテキストエディタマクロ可視化アプリマクロ(Rstudioのggplot2みたいな奴)やVBAなど・・を場当たり的に駆使して生き延びてきた。

anond:20200326063303

BasicPHP から Haskell はさすがに無謀でしょ。

まずは PythonRuby か、Java系譜かな。

言語習得

言語と言ってもヒッポクラブみたいな話にあらずプログラミング言語。いまのところモノにしたのはbasicPHPだけ。PHPは数年間触ってないので忘れたかも。「Learn git in a month of lunches」みたくお昼休みに本を見ながらキーボードを叩くとかそういう昼休みを習慣化したい。機械学習とか数値演算とかも取り組みたいのでJuliaか?Juliaは適当日本語教科書が未公刊なので、きっかけがないんだよな。どっかから出ているJulia本は、わかりにくいらしい。

あとは、Rか?

ライブラリがたくさんあるので、Rだろうな・・・ちょっとシンタックスに癖があるけど・・Rは言語というよりスクリプトというかマクロ・・・だよ・・な。

pythonとか

jsとか・・いろいろ・・・言い出したら霧ヶ峰高原関数型プログラミング教養として習得するということでHaskell学習してみたい。

2020-03-22

anond:20200321160247

いろいろありがとう

🤸‍♀️

これから習ってみたいマイブーム言語は、HaskellとJuliaです。Slackインストールしようかな?

🤸‍♀️

Chromecastは、ブルートゥーススマホ接続Bravia以外のテレビでもChromecast対応しているのかな?MarkdownからGoogleプレゼンに変換するのはどうやればいいのだろ?

2020-03-21

anond:20200320111336

一度時間のある時にQiitaにまとめることとしよう。Qiitaデビ...

消えているのでここまでしか読めないけど、期待してますタグを見張ってるのでデビューなさったら気づくと思う。cabal 関連でわからないことがあったら、オレは Haskell できるけど Anond には基本張り付いないので、コミュニティ相談するといいよ。Slackhaskell-jp の questions スレッドいちばん人が多くて、やたら親切に教えてくれる。

ところでちょっと聞いてください。こないだ自室の iPad動画アプリ VLCエロ動画を観てたんです。ふと気になって、アプリの右上にある"RSSアイコンウインドウを重ねたようなアイコン"を押してみた。すると画面が真っ暗になり、突然、居間の大画面のテレビからエロ動画が流れ始めた😱

これが Chromecast と呼ばれる機能です。テレビBRAVIAにはこの機能が内蔵されているとのこと。同じLANに繋いだPCから音楽映像をワンタップで送ることができる。怖るべきことにこれはテレビスリープも解除するらしい。アラートもなく設定でオフにできないので、これを働かなくさせるにはテレビChromecast 機能無効化するか、同じLANに繋がないしかない。必死に調べて、対策を取りました(居間普段親が寝る部屋なので、たまたま昼間で、誰もいなくて、本当に良かった)。

この Chromecast を使ってスライドを表示できるのでは? と思って調べてました。

Chromecast の機材は4000円以下で買える。戦略はこうです。これをプロジェクター繋ぎ会議室に小規模の無線LANを構築します。発表者はスマホでそこに接続してもらい、Google スライドアプリにいれた発表資料Chromecast する。スマホは誰でも持っているし、これなら追加の費用も少なめで得体の知れないUSBを刺される怖れもなく安全に、トラブルも少ない発表環境が作れるかも。

2020-03-20

Haskell使いはレベルが高いという噂を流されHaskellスキル採用されたのにJavaを書かされる事例

2020-03-01

MtGプログラミング言語の色

このプログラミング言語MtGだと多分この色の組み合わせだろう。

みたいなのをまとめたら次のようになった(TIOBEのランキングトップ50)。

何かしっくり来ない箇所があるが原因が分からない。

後半は知らない言語もあって怪しい。

順位プログラミング言語色の組み合わせ 内訳
1 Java アブザン 白黒緑
2 C ゴルガリ 黒緑
3 Pythonティムール緑青
4 C++ ジャンド 黒赤緑
5 C# 4C(赤欠色) 緑白青黒
6 Visual Basic .NETレズニア 緑白
7 JavaScript ボロス 赤白
8 PHPグルール 赤緑
9 SQL 無色
10Swift 4C(緑欠色) 白青黒赤
11Go ゴルガリ 黒緑
12Assembly language 黒単
13 R ゼット 青赤
14 D グリクシス 青黒赤
15 Ruby 赤単
16 MATLABゼット 青赤
17PL/SQL 無色
18 Delphi/Object Pascal アゾリウス 白青
19 Perlラクドス 黒赤
20Objective-C エスパー 白青黒
21 SAS アゾリウス 白青
22 Visual Basic 緑単
23Dart ジェスカイ 青赤白
24Scratch 白単
25 Scala 4C(赤欠色) 緑白青黒
26 Groovy ナヤ 赤緑白
27 Transact-SQL 無色
28F#バント 緑白青
29 Rust 4C(白欠色) 青黒赤緑
30 COBOL オルゾフ 白黒
31ABAP アゾリウス 白青
32 Lispシミック緑青
33Kotlin 4C(緑欠色) 白青黒赤
34 Logo 白単
35 RPG ディミーア 青黒
36 Lua 緑単
37 Fortran スゥルタイ緑青
38 PowerShell ジェスカイ 青赤白
39 Ada ディミーア 青黒
40 LabVIEW ディミーア 青黒
41 Erlang 緑単
42 Julia ティムール緑青
43 ML 青単
44 Schemeシミック緑青
45 Haskellエスパー 白青黒
46 TypeScript ジェスカイ 青赤白
47 OpenEdge ABL アゾリウス 白青
48 LiveCode アゾリウス 白青
49 PostScript 無色
50 ActionScript ジェスカイ 青赤白

見返してみるとおおよそ次のルールに従って決めているような気がした。

そうしてしまうとMtG関係無いのでは…。それが原因なのではないか。後は緑の判定があやふやな気もする。

イメージ
レイヤ初心者向け
浮世離れベンダー
レイヤ、黒魔術
速い、先進
基盤、グル
無色 道具

マルドゥ(赤白黒)が無かった。

2020-02-27

偏見に満ち溢れた俺の書いたことのあるプログラミング言語説明

1つにつき3行で書いた、言語の話は炎上しがちだから匿名で。

C言語:

現代だと電子機器プログラミングで使うよ!

Linuxとかサーバープログラムの内部で使われることが多いけど、

自分で手を加えることは少ないか安心して!

C++:

実行速度が超高速なのと複雑怪奇な構文が特徴だよ!

ゲームプログラミング動画編集ソフトといった高いパフォーマンス

求められるシステムで使われるイメージがあるから最初は近づかなくても良さそうだね!

C#:

Unityゲーム作る時に使うよ!

比較的書きやすくて勉強になるからオススメ出来るけど、

Microsoft にズブズブな印象が強いのがちょっと気になっちゃうね!

Java:

Androidアプリとかサーバーアプリ作るのに使えるよ!

勉強やすくて個人的には良いと思うけど、

現代だったら他の言語のほうが書きやすくてオススメかな??

Scala:

Javaの強化版で、サーバーアプリ作るのに使えるよ!

関数型っていう意味不明概念が混ざってるから

最初は近づかないほうが懸命だと思うよ!

Kotlin:

Javaの強化版で、Androidアプリとかサーバーアプリ作るのに使うよ!

もしAndroidアプリを作るなら最初にこれを学ぶと良いか???

とにかく書きやすいし書いて気持ちが良いし、名前可愛いね!

Objective-C:

iosアプリを作るのに使えるよ!

今はもっと書きやす言語があるから学ばなくても良いけど、

iosアプリ作ってる時にどうしても触らなきゃいけないときが来るんだよね...。

Swift:

iosアプリを作るのに使うよ!

もしもiosアプリ作りたいんだったら実質これしか選択肢は無いか覚悟してね?

書きやすい方だから身構えなくても大丈夫だけど、Macが無いと書けないから気をつけて!

PHP:

サーバーアプリ作るのに使えるよ!

個人的にはあんまりきじゃないかなって思うけど、

PHPお仕事はいっぱいあるからこれが出来ると飯が食えて嬉しいね

Ruby:

サーバーアプリ作るのに使えるよ!

学びやすいし物を作る時のスピードも早いから、

最初に学ぶ言語としては結構いかもしれないね

Python:

サーバーアプリとか人工知能(笑)とか作るのに使えるよ!

個人的には本当に好きじゃないけど、仕事人口も多いのが特徴だね!

おっぱいと語感が似ててなんだか幸せになってきたね!

JavaScript:

webアプリサーバーアプリを作るのに使えるよ!

環境を整えたり流行を追ったりするのがちょっとだけ面倒くさいけど、

webアプリ選択肢が他に無いから仕方なく使ってるよ!

Go:

サーバーアプリを作るのに使うよ!

Googleで開発された言語で、書いてるとドーパミンが出るよ!

僕が大好きな言語なんだけど残念ながら仕事は少ないね、本当に残念だ。

Lua:

ほとんど見かけないのに何故かたまに書かざるを得ない事がある言語だよ!

既存アプリケーションのプラグインを書く時に強制されたりするかな?

言語自体は単純だから、使う時が来たら覚えるぐらいでいいと思うよ!

Perl:

遥か昔に広く利用されていた言語だよ!

今学んでも古い会社しか使いみちが無いから、

令和に新しく学ぶ必要はないかもね!

BASIC:

プログラミング初心者が触りがちなイメージがあるよ!

きっと今でもどこかの世界では使われてるんだろうけど、

令和だったら他の言語も学びやす環境が整ってるから学ばなくて良いかもね!

Haskell:

正直に言うと何に使われてるのかイマイチからないんだ、ごめんね。

関数言語っていう(僕にとっては)難しい概念で、

自分を更に高めたくなったら調べてみるのも良いかもね?

2020-02-11

https://anond.hatelabo.jp/20200211192729

私もそうだ。
原因を考えてみると、書いている内に自分反論を思いついてしまうからというのがある。
反論される前に先回りして細かい条件を文章中に書こうとしてしまう。

私はプログラミング趣味にしている。
モダンプログラミング言語はやりたいことをやれるというだけではなく「制約」を記述できるようになっている場合がある。
C++ ならコンセプト (が導入される予定)、 Rust ならトレイト、 Haskell なら型クラス

自分がやろうとしていることの前提は何か、それを合理的に整理するのが癖になっている。
どうでもよい文章を書くにあたっても必要以上に但し書きを付けてしまう。

ま、別にそれが悪いことだとは思ってないけどね。

2019-11-22

特定言語しか使えない人って

プログラミングをどう理解してるんだろうね。

発言語は基本的PHPJavascript職場

大昔に作られたVB6製のツールを見てくれって頼まれた。

かにVBのわかる人がいないからって。

別に複雑なコードでもないし、PHPJSでも、まがりなりにもコードを書いてる人なら見ればわかるでしょって感じなんだけど。

スマホアプリ作るときも、JSならだれでもメンテナンスできるからってmonacaかいJSアプリが開発できるやつを採用したけど、Webとはアーキテクチャが違いすぎるから結局一部の人間にしか触れなくて、そんなマイナープラットフォーム採用した意味なかったし。

ちょっとしたツールを作るときも、Windowsアプリとして作ったほうが使い勝手いから、VB.NETかC#で作ろうって話になってもベテラン勢が猛反対して、無理やりPHPWebアプリとして作ることになったし。

サーバーで使うシェルスクリプト(.sh)も未経験の俺が、ネットチョコチョコとググって改修して、すごいびっくりされたことがあるけど、こっちからすればなんであんたらは触れないかっていう感じだし。(黒魔術的な書き方もあるらしいけどもちろんそんな書き方ではない)

Windowsサーバーで使う .BAT ファイルを書くときに、.BATファイル仕様では黒魔術的なテクニックを使わないと実現できない仕様だったからほかの言語しませんかって提案したけど、.BATでないとほかの人が保守できないからと却下

無理に.BATで書いて、逆に変なテクニックを駆使した保守性皆無のコードになってたし。

どの言語を使うかって話題になると、自分の使ってる言語以外を使うとアイデンティティ崩壊するかのような勢いで反対する。

Haskellみたいにまったく思想の違う言語ならともかく、似たような言語で、かつifとループ配列サブルーチン概念を把握していたら理解できるような書き方しかしてないコードでも、普段使ってない言語って時点で理解不能に陥るんだよな。

2019-11-20

キメる

Haskellコード書いてるとキメてる感じする。

Monadで書いてるときのあの感じね。

MDNAやったことないので、比較はできないけど。

2019-09-12

[] Haskell学習カリキュラム

  1. Haskell文法を学ぶ。
  2. 圏論を学ぶ。
  3. 圏論知識を基にして、再びHaskellを見直す。

Haskell文法書だけを読む

圏論Haskell対応関係

対象
関数

となっていることを、最初は知らなくてもOK

単にHaskell文法を学ぶだけで、背後にある考え方(圏論)は、まだ知らなくてもOK

圏論の基礎

圏論は元々数学で考案された考え方なので、直接的には代数やとトポロジー知識必要になるが、そこまでのレベルは求めていない。

とりあえず、プログラミングで使える程度の初歩的なレベル理解で十分。

圏論の具体的な応用例としてHaskellを見直す。

圏論知識を基にして、Haskell文法や仕組みを見直してみる。

注釈対象定義して、関数は射を定義していることが分かる。

ファンクター、アプリティブ、モナドで、手続き型の順次・反復・分岐表現できることが分かる。

2019-08-24

[] プログラミングHaskell 第2版

https://www.lambdanote.com/products/haskell

著者前書き

狙い

Haskell純粋関数型のプログラミング言語です。

Haskell を使うことで、明瞭簡潔にして正確なソフトウェアを素早く開発できます

本書の対象読者は、その Haskell を学ぼうとする現役のプログラマー大学生高校生などの幅広い方々です。

プログラミング経験がなくてもかまいません。

読者が何も知らないことを前提に、あらゆる概念についてゼロから説明していきます

そのために例題と練習問題も慎重に選びました。

題材のほとんどは、科学的な考え方になじみがあれば、16 才くらいでも十分に理解できるでしょう。

2019-05-25

Ruby学習コストの高い言語だと思う

一応あらかじめ釘を指しておくと、有名で実用的な言語に限った比較の話である

LL言語は楽勝」というのが一般的見解だと思うけど、よくよく考えてみたらRubyほど学習コストの高い言語も珍しいと思う

言語を(使うものとして)理解するには、「コアコンセプトを理解する」「構文を覚える」「組み込み/標準ライブラリに何が有るかを覚える」という要素があるように感じている(これは感じているだけなので事実ではないかもしれない)

Rubyプログラマプログラミング的なことについて楽をするための言語である(と思う)

たとえば素数判定ひとつするにしても、自力で高速な素数判定を実装するよりも、 require 'prime' して Integer#is_prime? するのが正しいという雰囲気がある

というよりも、自力一生懸命実装することが悪であるかのような雰囲気さえある

「こう書けば短い/楽なのに、どうしてそう書かないの?」という雰囲気が漂っている

Rubyではある実装について、

Ruby時間計算量やメモリ効率の話をするのはナンセンスなので、純粋に書き方のみを取り上げて優劣を語ることができる

そうなってくると、『ちゃんRubyが書ける』という状態になるには「組み込み/標準ライブラリに何が有るかを覚える」というステップが非常に大事になってくる

これが莫大なコストになっている。

「構文を覚える」コストはどの言語でもほぼ同じで、

「コアコンセプトを理解する」コストHaskellやRustではやや大きいかもしれないが理解するのはそう難しくない「Haskell入門して1ヶ月経つけどHaskellの何が特徴的なのかまったくわからん」などという人はいない

そう考えるとRubyは「組み込み/標準ライブラリに何が有るかを覚える」が非常に大事だし莫大な量である

Rubyに入門して数年経つけど、いまだに「えっこんなメソッドあったの」というのが時々ある

そのたびに自分ダメRubyistだなと思う

辛い

2019-04-04

anond:20190404131646

チューリング完全言語で、手続き型のパラダイムを含まない言語なんてそうそう無いだろ。

SQLとかのドメイン固有言語でならあるけど、それを「プログラミングを覚える」の文脈で扱うのは違うよな。

厳密にはHaskellとかは手続き型のパラダイム無しで構成されているけど、それでも手続きであるかのように見える仕掛けがあるし。

2019-03-28

Googleってとこにソフトウェアエンジニアで入ったんですけど

このエントリは中からも外から匿名な感じでお送りしております中の人を当てられたら1000ガバス

子供の頃とかはダイヤブロック好きでした。延々ぐちゃぐちゃロボットとか作ってた気がする。

高校まではプログラムとか全然ゲームやっててあーこういうゲーム自分でも作ってみてーなーみたいな。

大学は行きました。でも情報系じゃなくていわゆる理工系学部のどっかなぜなら情報系は偏差値が高かったから。大学在学中にサークルとか趣味プログラミング的なことを始めてあーやっぱこういうの楽しいよなーと思った。製品出てくるまでのライフタイムがほぼゼロで即結果が帰ってくるようなの。ほいでサークルゲームとか部内サービスかいろいろ作りました。学んだのはDirectXとかCPPとかHakellとかdotNetとか。あ、プログラミング系のバイトもやってました。覚えてない。CとかSQLかいじってた気がする。

院にも行きました。ここで本格的に情報系の職業に付きたいのでやっぱ箔は必要かなと思って情報系の院へ。特に後に仕事で直接役に立つ研究はしてなかった気がしますが、とにかく論建ての厳密性みたいなのはサンドバッグになりながら学べた気がします。英語は終始できませんでした。読んだ論文英語だったけど結局日本語しか書いてない。

さて就職活動ですが、Googleが応募してるらしいので応募しました。なんかこーあんまり低級なことはしてこなかったのでCとかわざわざ書いて練習した気はします。Haskellよりも100倍早かった。

面接の内容は言えませんけど(新卒でも中途でも同じ基準らしいっすよ)強いて言うなら「XXX(任意の基礎知識)?なんすかそれ?」(面接官に教えてもらう)「それはこういうことでっしゃろか?たぶんこー書いたら実装できます?」みたいな受け答えがウケたんじゃないかなーと思う。自分知識はボロカスですけど知恵には自信あります

まぁこうしばらく中で過ごしてみて思うのは、のたうち回る能力がまず必要で、次にしんどい時にカードをさっと挙げれる能力とかかなーと。困らないようにする能力と困った時になんとかする能力。結局どうしたって困るので。

やることは超クソ複雑な制約のもとでナイスシステムを組み上げることで、結局クソ複雑な実装になりますさらにその上で最適化したり既存機能を壊さないように新機能実装したり。

最近TOEIC受けてないけど900取れた覚えはない。ただTOEIC高得点の人の英語Youtubeで聞いてもアレな感じなことがあるのでTOEIC西海岸荒野で通じるかは知りません。

技術力がすごい人?そりゃいるんじゃないんですか?ただ僕は圧倒的に人を見る目がないのでなんかみんなすごいって言ってる人はすごいんだろーなーみたいな雑な。でも子供の頃じーちゃんちで泣かされた黒猫より怖い人にはまだあったことがありません。

2019-02-11

anond:20190211124957

癖があるとよく言われるRubyHaskell民とは比べられるしパワハラがどの程度か書いてけよ

ログイン ユーザー登録
ようこそ ゲスト さん