はてなキーワード: Pythonとは
指定できるようになってるんならjavascript以外にもpythonだの使えるようにしとけよバーカバーカ
どうせjavascriptしか使えないのに指定できるようにしてんじゃねーよバーカバーカ
580 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:33:38
普通に三項演算子 ? : いれた方がよかったんだと思うけど、そうできない理由があったのか?
581 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:37:57
>>580
ああすごい同意。
構文入れるんだよ。
583 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:44:31
つか、一種の3項演算子じゃん。
[x for y in z] とかとも類似する構文だし、俺はあれでいいと思うけどなぁ。。。
584 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:45:26
>581
とか? (本音を言うと誰にも使って欲しくない)
585 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:46:03
? : が既に使われててダメだったなら
C then X else Y
みたいにできなかったのか疑問
条件が真ん中に来るとか見づらいよ……
586 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:46:09
別にCに合わせる必要はないと思うよ。演算子関係ではCと違う部分がいっぱいあるから
半端に似せて「Cと同じだ」とか誤解を招くのはよろしくないと思う。
587 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:48:42
"x for y in z"
← ←
データの流れが見える
"X if C else Y"
↑ ↑
分かれていて嫌
588 :デフォルトの名無しさん[sage]:2006/07/26(水) 00:57:28
>>587
でももう決まったことだし、個人的にはあまり気にしないで使うことになるだろうな。
591 :デフォルトの名無しさん[sage]:2006/07/26(水) 01:07:32
初めてリスト内包を見たときは「何じゃこりゃ、ワケわかめ」という印象だったけど
もう慣れてしまった。今ではリスト内包は直観的で分かりやすいと感じる。
ずっと Guido のセンスで取捨選択してきたわけだし、ぶっちゃけ今のところこれといって
今度の新しい三項演算子も慣れたら普通だと感じるようになるんジャマイカ。
592 :デフォルトの名無しさん[sage]:2006/07/26(水) 01:13:04
X if C else Y
「Xなんだよ! まあCだったらの話だけどな そうじゃなければYでよろしく」
593 :デフォルトの名無しさん[sage]:2006/07/26(水) 01:15:11
594 :デフォルトの名無しさん[sage]:2006/07/26(水) 01:16:06
[x for y in z]
↑
[x for x in original_list if x>2 and x<5]
595 :591[sage]:2006/07/26(水) 01:37:07
X if C else Y を使うのはきっと式の中がメインになるんだろうな。
functor = lambda x: x+1 if y > 0 else lambda x: x-1 if y < 0 else lambda x: x
とか、
delta = Numeric.array([[1 if i == j else 0 for i in range(M)] for j in range(N)], Numeric.Float32)
みたいな。>>593の言う通り、用例を考えていたらもう慣れてきた希ガスw
596 :591[sage]:2006/07/26(水) 01:54:02
q, r = divmod(n, 10)
print "%d%s" % (n, "th" if q == 1 else "st" if r == 1 else "nd" if r == 2 else "rd" if r == 3 else "
th")
たくさん if ... else が続く場合はなかなか読みやすい希ガス。
601 :デフォルトの名無しさん[sage]:2006/07/26(水) 11:08:59
>>596
その書き方が許されるとすると、かなり応用力がありそうですね。
596がすでにぱっと見ではよく分からない
602 :デフォルトの名無しさん[sage]:2006/07/26(水) 13:39:10
やっぱり、判定式が真ん中に来ると読みにくいな。
A = if C then B else D
603 :デフォルトの名無しさん[sage]:2006/07/26(水) 14:03:57
>>596
三項演算子いれて、
print "%d%s" % (i, r == 1 ? "st" : r == 2 ? "nd" : r == 3 ? "rd" : "th")
にしたほうが見やすくない?
607 :デフォルトの名無しさん[sage]:2006/07/26(水) 15:15:14
>>602
A = B if C else D だと
CならばDと目が流れちゃうかもかも。
まあ、慣れれってことか。
608 :デフォルトの名無しさん[sage]:2006/07/26(水) 15:28:49
まあ、ハズレのときはNoneが返る形ならば、
A = B or D で済むんだけどねぇ。
BがNoneならDって使い方。これは結構便利でよく使ってるんだけども。
いまだに
A = B and D は使ったことがないけども。
609 :デフォルトの名無しさん[sage]:2006/07/26(水) 15:49:33
>>596
> たくさん if ... else が続く場合はなかなか読みやすい希ガス。
おお!まさにそう思うよ!急にこの演算子が大好きになった。
何が得意なのか謎、もしくは特化した言語を持たない人は不明と書いている。
褒めだろうが悪口だろうが質問でもなくても何でも回答してくれる。
このクラスはask.fmを愛するプロフェッショナルな人しかなれない。
Python | http://ask.fm/hamukazu |
C++ | http://ask.fm/EzoeRyou |
Haskell | http://ask.fm/tanakh184 |
回答率が下がるがそれなりに回答を付けてくれる。
C# | http://ask.fm/chokudai |
C++ | http://ask.fm/nico_shindannin |
Java | http://ask.fm/hyuki0000 |
不明 | http://ask.fm/chomado |
質問を選びすぎて回答率が低い。
PHP | http://ask.fm/tokumaru |
Vim | http://ask.fm/ShougoMatsu |
PHP | http://ask.fm/anatoojp |
リストラ予備軍。
Vim | http://ask.fm/mattn_jp |
不明 | http://ask.fm/KensukeFurukawa |
不明 | http://ask.fm/todesking |
10年位前、上位のサイトから電文を受け取り下位のサイトに再配信するプログラムを、Linux上にC言語で実装する仕事を引き受け、死ぬ思いで片付けた。
その時にお世話になったのが「UNIXネットワークプログラミング」という本。
この本、POSIX準拠のOS(要するにLinuxなどのUNIX系OS)におけるシステムプログラミングのノウハウに関しては名著、いやバイブルと言っていい。
名著が絶版になる理由は色々あるだろうが、この本に限って言えばもはやそういう時代じゃない、そういう低レベルの実装はトレンドじゃないということなのだろう。
でも、そしたら「決して遅延が許されない再配信プログラム」は、一体何をどう使って作るんだ?
プロセス間通信やスレッド制御、更にはシグナルも使い、それらが高速で動作しないといけない(いやスレッドは難しすぎて結局使わなかったけど)システムで、そんなオーバーヘッドが高い言語は使えないと思うのだが。
それらを解決できる気の利いたライブラリやフレームワークもなさそうだし。
或いは回線とスイッチを高性能にして、サーバリソースも上げられるだけ上げるというように、インフラ側の強化で解決しちゃうとか?
日本で最大規模を誇る電子掲示板サイトの2ちゃんねるでは3/13から新仕様APIに対応していない2ちゃんねる専用ブラウザは利用出来なくなった。
しかし、新仕様API移行に反発する有志達(主にオープンソースプロジェクトで開発れていた2ちゃんねる専用ブラウザユーザ)によって新仕様APIの規約の穴を突かれて突破されてしまっている。
新仕様APIの規約によればWebスクレイピングやJavascriptなどが禁止されているが、例えばPerlやPython、シェルスクリプトなどのユーザスクリプトによるHTTPソースの改変は規制されていない。
そこで有志達は規約通りに新仕様APIを介して2ちゃんねるのHTMLファイルを取得しユーザスクリプトによってHTMLを従来の2ちゃんねる専用ブラウザで読み込めるdatファイルへ変換する方法を編み出した。
ユーザが個人で楽しむ範囲でHTMLソースをdatファイルに変換するにのは法的にも問題が無いと思われ、2ちゃんねる運営にもそれらを規制する法的根拠を得るのは難しいと考えられている。
他にもルータのフィルタリング機能やDNSサーバー設定の変更で広告を表示しないようにしてしまうなど、2ちゃんねるの運営は思い通りにならない2ちゃんねらー達にやきもきさせられてしまう格好だ。
大学の一般教養でPascalを習った程度。専門課程に入る前に文法はすっかり忘れた。専攻は都市工学だからその後プログラミングとは縁はなかった。卒業前に第一種情報処理技術者の資格だけはとれてたのでプログラミングの何たるかとかオブジェクト指向なんかも知識としては知ってた。
大学卒業後にデスクトップユーティリティーのメーカーで技術営業をやった。顧客に製品仕様を説明するのが主な仕事なのでパワポばかり使ってた。その会社ではLinuxのソフトも販売してたから、Linuxのコマンドは打てるようになった。そこでシェルスクリプトを習得しようと思ったがあえなく挫折。
その後ネットワーク機器のメーカーに転職。トラブルシューティングでLinuxをさらに使うようになった。そこではHTTPプロキシを主に扱っていたので、HTTPプロトコルについては一通り知識を身につけた。その知識を実際にLinux上でシミュレーションしてみたくなり、Cを習得しようと思ったがやっぱり挫折。
部署移動でメールサーバーを扱うようになった。SMTPプロトコルの知識は身についた。ここでもSMTPをLinux上でシミュレーションしてみたくなり、こんどはperlを習得しようと思ったがやっぱり(ry
今はExchangeを扱ってる部署で働いてる。ここではExchangeメールのメタ情報をMySQL上で扱ってるから、SQLのSELECT文くらいは見よう見まねで使えるようになってる。
そんな俺も部下を持つようになり、デスクワークの時間が増え、比較的自由な時間が持てるようになった。そんなときにはてブでみかけたCoursera(https://www.coursera.org/)で本当に偶然に「初心者のためのプログラミング」というコースを見つけた。
Programming for Everybody
https://www.coursera.org/course/pythonlearn
コース自体は英語だが、別に教授と会話するわけではないし、Python文法以外は条件分岐や繰り返しといった過去に挫折しながらも知識としてだけはぼんやりと覚えていたことの繰り返しだ。英語が少しくらいわからなくても、図を見ていれば何を解説しているかくらいはわかる。
結論から言えば、このコースを受講したおかげでいままで断片的に持っていた知識 -単語だけは知っていた「オブジェクト指向」、「条件分岐や繰り返し」「アルゴリズム」などなど- がパズルのピースのようにかっちりと組み合わさり、Pythonが難なく習得できた。いままでにシェルスクリプトやCに挫折したのがウソのようだ。Linux、HTTP、SMTP、SQLといった周辺知識も余すところなく役に立った。何のことはない、Pythonの標準ライブラリを使えばHTTPやSMTPのシミュレーションなんて簡単にできたのだ。以前トラブルシューティングで夜中まで手作業でちまちまやっていた作業は、全部Python一発で解決したんじゃないか。
このコースをきっかけとして、俺の人生(といってはおおげさだが)が大きく変わった。小さいところで言えば、自宅PC上でバックアップにつぐバックアップでわけのわからなくなったフォルダ構造の中から、同一のファイルを探し出し削除できるようになった。(傍から見れば何を大げさなと思うかもしれないが、ここ10年くらいの俺の中で最大の懸案だったのだ。)仕事でも日次で発生する業務をバッチ化したり、繰り返し発生する手作業を全部Pythonで自動化した。(経営陣へのレポート作成とかそんな類のものだ。)おかげで残業どころか定時前に帰宅できるようになり、自由な時間はさらに増えた(笑)
ひとつ言語を習得してしまえば、あとは同じことの繰り返しだ。増えた自由時間を利用して、いまはPHP、JavaScript、jQueryを身につけて何かWebサービスを立ち上げようと目論んでいる。出来上がったら、またここでそれまでの道のりを紹介したいと思っている。
こんなことが自分の身に起こるとは、1年前の自分には想像すらできなかっただろう。それまでは「Webサービス」なんて言葉は自分とは一切縁がないと思っていたから。
欲を言えば10年前、いや5年前でもいいからこのコースに出会ってPythonを身につけていたら、今とはまったく違った人生を歩んでいたかもしれない。
コースを開講した教授との相性もよかったのだろう。彼の人柄にも好感をもてたし、「for Everybody」というだけあって、非常にわかりすい説明だった。英語だということを差し引いてもこのコースはおすすめだ。
たくさんのコメントありがとう。こんなチラ裏の文章がホッテントリ入りしてかなりびびっている(笑)
いくつかのコメントに返答したい。
こういう反応があることは投稿したときに予想はしていた。だが、何がきっかけでプログラミングを身につけたのかを具体的に書かないと、何の役にも立たない本当のチラ裏になってしまうので、コース名を書くことにした。だがこのコースをはてブで見つけたのは単なる偶然だ。このとき見つけたのがドットインストールのRuby講座だったら、Coursera→ドットインストール、Python→Rubyになっていただけのことだ。ここで言いたかったのは、断片的でも一度触れたことのある知識は後になってどこで役に立つか分からない、ということだ。Steve Jobsも言っていたが、「人生を振り返ったときに点と点をつなぐことはできるが、その点がなんの役に立つかをあらかじめ予想することなんてできない」ってやつが自分にも起こった、それだけのことだ。
なお、Courseraのこの教授は自分の授業内容をすべてオープンにしている。http://www.pythonlearn.com/ 教科書さえもここで無料で手に入る。Courseraに登録するのに抵抗があり、自習上等という人はここで俺が受けたのとまったく同じ内容を確認することができる。ちなみに授業はすべてYoutube上で公開されている。
これについてはまったくその通りだ。ただ、もう新たな言語を覚えることにまったく抵抗がなくなったのと、PHPとRuby on RailsがWebサービス界ではメジャーらしいので、とりあえずPHPもやってみよう、くらいの軽い気持ちで思いついただけだ。ひょっとしたら実際にはPython+Djangoとかで開発するかもしれない。
pythonはワンライナー的な用途からサーバサイドスクリプト、GUIアプリ、各種アプリのマクロ等用途が幅広いのがメリットだから、言語だけ弄ってても有用性は分かりにくいし、自分の日常作業に関わって無いなら覚えても有効活用は難しいかもね。
良さがちっともわからなかった。少なくとも他から際立った良さみたいなのはなかった。
インデントだけで入れ子関係を判断するっていうのは保守性とか可読性とか上がりそうで期待してたんだけど、実際書いてみたら見づらいし閉じカッコを書かないのがこんなに気持ち悪いとは思わなかった。
あと入出力も意外と面倒。フォーマットとかエラー出力とかもっと単純にかけたらいいのに。
エラー出力について調べてたら基地外みたいにエラー出力の作法について熱弁してる記事見かけてやや引き。
関数の引数も参照だけど参照じゃなかったー!みたいな感じで中途半端だし挙動がわかりづらい。
JavaScriptじゃなくてPythonだったら幸せな世界が訪れていたのに、どうして世界はJavaScriptをもっと多用する流れになってるの?
JavaScriptなんか好きで使ってるやつなんか一人もいなくて、一人残らずJavaScript滅びろって念仏を唱えてるよ。
アホなプログラマがアホなプログラムを書くのを防ぐ言語は存在しない、って誰かがいってた
バイオ系は、つぶしが効かない。ポイントは、そうなんですよね…。
確かに主成分分析、流行りの統計的手法をなどを良くわかろうとするならば、線形代数とか知っている格段に良さそうですよね。
もしかして、普段から結構レベル高い人を相手に、されていますか。旧帝大系か、早慶レベルの人ですか。というか、アカデミックな仕事を得ようとするならば、当然ですかね…。
---
プログラミングといっても、csv file のサイズも、せいぜいExcelで開くことが出来る程度の量のデータです。
多くても5000行もありません。
でも、Rでloopで回して、ggplotでグラフを描く、optionを変更とかは、しています。
pythonは、プログラマーの人にも、手伝って貰って、csvから、matplotlibを使ってなんとか、望んだ形のグラフを書ける程度です。
(Learn python hard way なるものを途中で挫折のレベルです。)
業務で、それらのR, pythonの技術を使える環境にあるので、学んだほうが、自分の為にも、職場の人の為にも、なりそうですね。
プログラミングを書けるようになるには、Stack OverFlowとか、英語のドキュメントを読めるとやっぱり、違いますよね。
英語が出来る外国人っていいなぁって思います。もちろん、日本人でも。
—
はてなで、ブックマークがたくさんついていたので、あの記事も読みました。
「圧倒的に生産性の高い人(サイエンティスト)の研究スタイル、
http://d.hatena.ne.jp/kaz_ataka/20081018/1224287687」
経験が浅いうちは、経験のある人とのディスカッションやコールドインタビューという手法が大切、ということを思い出しました。
+++
はてなー技術的な動向としては、データサイエンスって流れみたいですね。
細分化が激しそうですね。
機械学習は、たとえば、slide shareで、パターン認識と機械学習入門
http://www.slideshare.net/mmktakahashi/ss-13694313
オライリー本の「入門 機械学習」Rで、書くやつです、これは、買いました。
そういうことならば、道としては、間違ってなさそうですね。
自分の興味で食べていけそうな感じも、ないわけではないですね。
--
ーーー
そのまま医療とか製薬応用とかできそうな分野ならつぶし効くかもしれないけど、そうじゃないと辛いんじゃないか…知らないので的外れかもしれないけど。
言えることは、統計(それに必要な線形代数と基礎解析および確率論の知識)とプログラミング(まぁRでいいと思うがプログラミング言語としては変なのでpythonあたりをやっとくと他に応用効きやすいかも)は潰し効くスキルなので是非やるべき。バイオは数学できない人多いらしいけど、やはり知的な仕事をする上で数学できないってのはかなり辛い。既にできるならすまそ。
ついでに機械学習(どこまでやるかは微妙だけど、バイオなら画像処理方面が効くのかもしれない。ディープラーニングとか流行ってるし)に手を出せるといいかもしれない。間違っても機械学習メインで研究する方向には行かないほうが良い(超レッドオーシャンなので)。
ストーリーが重要というのは、そもそもこんだけ世界が細分化してるんだから増田の研究に詳しい人はラボ内であってもそんなにいないはずだからだ。
どこに向かっていくつもりなのかが予め分からなければ聞く側はそれを推測しながら聞かなくてはならない。ゴールイメージが分かれば先人の経験からその設定自体に問題があることがわかるかもしれない。
コンサル屋の書いた本だけど良い本なのでおすすめ。http://www.amazon.co.jp/dp/4862760856/
少なくとも「俺の"技術"はこの言語のAPIの知識だ!このAPIがout of dateになったら何もできないぞ!」っていう人は技術があるとは言わんと思うが
別にPython3で使える画像処理ライブラリだってあるし、Webフレームワークのdjangoみたいな人気あるやつは両対応してるし