質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

15回答

30587閲覧

Python の良さを知りたい

manbo

総合スコア114

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

21グッド

40クリップ

投稿2016/01/30 09:04

21

40

Python をはじめたばかりの初心者です。

Python はプログラミング言語として初心者が始めやすく扱いやすいとして紹介されていました。

プログラミング言語を学ぶうえでも、言語の将来性が高いことやgoogleなどにも採用されている等で、実用性が高いということで魅力的であるといわれているようです。ただ、、

自分の中ではいまだ Python の良さがいまいちわかりません。以下が理由です。

(よくあるPythonの紹介)

  • Python は対話的にプログラミングができるからいい。

→プログラミングって対話的にやってる人いなくない??

  • Python は、いろいろ使えるしライブラリーが豊富、海外でもユーザーが多い。

→ライブラリの使い方がわからない。海外にユーザー多くても英語で読めないので結果使えない。そもそもAPIの説明書を見てもよくわからない。

  • Python は、インストールも簡単だから初心者もOK、Linuxを使ってるひとならコマンドで...

→そもそも初心者ってLinux 使ってるのか? コマンドって黒い画面(コマンドプロンプト)から初心者はやらなくない??

  • Python でTweepyを使うなら、pip から簡単に...

→pip ってなに?

--
わたしがいま直面しているのがこのようなところです。結局pythonをいじり始めて、参考書片手に基礎を進めていますが、いまいち広がりが感じられず、そもそもpythonって初心者に優しいのかが疑問になってきました。紹介されているコードも結構動かなかったりしてるので、何が正しいのかもわからず頓挫しています。

Pythonの良さや、わかりやすい参考書、あるいは初心者がPythonを使いこなせるようになるためにいいサイトなどがあればご教示いただけますでしょうか?

CyberMergina, kurara674, ForestSeo, matobaa, TeYoshimura, come25136, naoyan, afroscript, imamu8415, ai_2013_dev, 他11名👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答15

0

Rubyistの私がPythonの良さを語ってあげましょう。

Pythonの良さがいまいちわからないとの事ですが、それは他の言語を知らないからです。Pythonしか知らなければPythonで当たり前のことがプログラミング言語の当たり前のことだと思うかも知れませんが、それは違います。世の中にはどうしようもなく駄目な言語がたくさんあります。たとえば、PH...うわなにをするやめr

失礼しました。では、取り上げていたPythonの良い面を補足説明しましょう。

  • Python は対話的にプログラミングができるからいい。

対話的な機能はREPL(read–eval–print loop)と言うものでプログラミングの動作を確認するのに最適です。ある関数について学んだとき、それがどのように動くか確認したいとします。たとえば、print()関数について、print("a", "b")と二つ引数を渡すとどうなるか?print(1)と数字を渡すとどうなるか?疑問に思いますよね? もしREPLが無い場合は、わざわざプログラムを作成して実行する必要があります。でも、Pythonなら、pythonとただ実行した後に、上の関数を書くだけで動作が確認できます。これは言語を学習しているときだけで無く、後からも大変役に立つ機能です。知らないライブラリを使おうとしたとき、簡単にその動作を確認できるからです。

REPLは全ての言語が標準で備えている機能ではありません。別途用意されている場合もありますが、インストールが複雑だったり、出来ることに制限があるなどPythonのように簡単に色々できるものは少ないです。

また、REPLを電卓代わりに使っている人もいます。下手な関数電卓より、かなり高機能です。

  • Python は、いろいろ使えるしライブラリーが豊富、海外でもユーザーが多い。

ライブラリが豊富にあることはとても重要です。Pythonは特にディープラーニングやビッグデータなど今最も熱い分野のライブラリが他の言語よりも豊富と言われています。こういった計算ライブラリ以外にもやがて必要になるだろうWeb系やGUI等の一般的なものであればほぼ全て揃っています。もしこれらのライブラリが無かった場合は、自分でライブラリを作らないといけません。それは大変手間ですし、かなりの知識が必要になります。

また、ライブラリのインストールも使い方も簡単です。

pip install パッケージ名

だけで依存関係を含めて自動的にインストールできます。あとはPythonのソースで

Python

1import パッケージ名

とするだけで、ライブラリに含まれる豊富な関数を使うことができます。他の言語ですと、圧縮ファイルをダウンロードして、展開し、指定された場所に手動で配置する必要があったりします。言語によっては、依存しているライブラリを先に入れる必要があったり、ソースから手動でコンパイルをしたり、インストールプログラムを動かしたりする必要があります。場合によっては、その方法が統一化されておらず、ライブラリによってやり方が異なると言うこともよくあります。

残念なことですが、ライブラリの多くは英語でしか説明がありません。しかしながら、これは他の言語も同様です。これからプログラミングを学び、その技術力を高めるには、技術英語が読めることは必須の技能です※。英語だからと言って敬遠せずに慣れてください。しかし、多くの人が使っている有名なライブラリであれば日本語で使い方が書かれたサイトがあります。Pythonは日本でも多くのユーザーが使用していますので、情報はすぐに見つかると思います。

※ 英語が読めないとプログラマーになれないというわけではありません。ただ、単価が安い誰でも出来る仕事しか来なくなるだけです。

  • Python は、インストールも簡単だから初心者もOK、Linuxを使ってるひとならコマンドで...

Windowsであってもインストーラを実行するだけです。またChocolateyというツールを入れているのであれば、コマンド一つで入ります。なお、LinuxやMacでは通常であれば最初からPythonが入っています。

一般的なWindowsユーザーにはコマンドプロンプトが馴染みが無い物に思えますが、それは一般ユーザーで終わる人だけの話です。プログラマーだけで無く、IT関係の技術者にとってコマンドプロンプトなどテキストベースであるCUIの操作は当たり前のものであり、その操作は一般的です。今のうちにこれも慣れてください

言語によってはコマンドプロンプトなどのCUIを一切触らずにプログラムを完遂できるものもあります。ですが、それだけで出来ることは限界があり、せいぜい型が決まったデスクトップアプリぐらいしか作れるようになりません。

  • Python でTweepyを使うなら、pip から簡単に...

pipはPythonのパッケージ管理ツールです。ライブラリを簡単にインストール、アップデート、アンインストールが出来ます。Pythonでは3.4から標準で入っています。

このパッケージ管理ツールですが、あると効率が全然違います。言語によっては標準で用意されていなかったり、用意されていても問題が多くて使い物にならなかったりします。はじめから有用な管理ツールが用意されている言語は少ない方で、言語によってはパッケージ管理ツールが乱立し、何を使っていいのかわからないというのもあります。

以上になりますが、少しは良さが伝わったでしょうか?

最後に、これからPythonを学ぶのであれば、一つだけ注意点があります。それはバージョンです。Pythonには現行で2系と3系の二つのバージョンがあります。2系はいずれ保守が終了しますので、これから学ぶのであれば3系を学ぶことをお勧めします。そして、本やサイトでPythonを学ぶときは2系なのか3系なのかを必ず確認してださい。2系と3系は一部互換性が無い部分が有り、2系のサンプルコードを3系で動かそうとしてもそのままでは動かないことがあります。特に古い本やサイトは更新されずに2系のままの場合がありますので、3系と明示されていない限りは参考にされないことをお勧めします。

Rubyはどうかって?あんな国産言語どうでもいいよね。

投稿2016/01/30 11:45

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unau

2016/01/30 15:21

惚れ惚れするような回答ですね。
退会済みユーザー

退会済みユーザー

2016/02/01 04:04

「うわなにをするやめr」のところで吹きました(笑)
manbo

2016/02/01 04:12

raccyさん さっそくコメントいただき誠にありがとうございます。詳しく書いてくださり感謝です。 しかし、非常に申し訳ないのですがコメントにたいする知識すら持ち合わせていないわたしですので理解できませんでした。申し訳ございません。。もう少し学習したうえでコメントを拝見させていただきたいと思います。
raccy

2016/02/02 21:05

「RubyistがRubyを語らずにPythonを語ってどうする」 ってツッコミを待っていたのですが・・・ > manboさん 焦ることはありません。最後のバージョンに関する注意点さえ覚えておいてもらえれば、大丈夫です。Pythonはとてもいい言語なので、学んで損は無いですし、必ず将来の糧になります。 さて、ついでですが、Rubyについてです。実は上で書いているPythonの利点の内、Pythonがディープランニングといった機械学習系のライブラリが一番充実しているという1点を除き、Rubyにもすべて当てはまります。さすがに機械学習ではPythonが他の言語を一歩抜きんでていますが、逆にRubyはRalisをはじめとしてWeb系では色々便利なものが揃っています。ただ互いに、特定の分野について、出来る・出来ない、の話では無く、よりしやすい、ぐらいの違いしかありません。あとは思想や文法の好き嫌いぐらいで、どちらも良い言語ですし、私はどちらでもいいと思っています。 なんだ、Pythonはたいしたことないじゃないか、と思われるかも知れませんが、こんなことが言えるのはRubyぐらいです。たとえば、PH...おや、誰か来たようだ
退会済みユーザー

退会済みユーザー

2019/10/17 07:32

約1週間前からPythonの学習を始めた者です。(プログラミング自体に触れるのも今回が初めて) とても分かりやすく、かつ楽しく回答を拝見させていただきました。 またちょくちょく覗かせてもらいます。
tacsheaven

2019/10/17 07:53 編集

>2系はいずれ保守が終了 いずれというか、2020年1月が終了(コード凍結)ですね。最終版は 2.7.18 として、2020年4月中旬頃出る予定となっています。 https://www.python.org/dev/peps/pep-0373/
guest

0

他の回答者と同意見なので、蛇足ですが。

私がPythonを使ってて楽だなあと思う点は

  • リスト内包表記
  • アンパック
  • デコレータ

(アンパックはRubyとかにもあるけど)
Pythonは文法が平易で可読性に優れ、書いててとても気持ちがいいと思います。
嫌いな点は、初心者が文字コードでハマりやすいことと、 lambda と書くのがめんどくさいことです(←IDEを使え)

投稿2016/01/30 12:31

Lhankor_Mhy

総合スコア36087

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manbo

2016/02/01 04:08

Lhankor_Mhyさん さっそくコメントいただき誠にありがとうございます。 おっしゃるように、Pyhon の文法は確かに分かりやすいと思いました。 あと、リストなどは確かに便利だなと思いました。 アンパック、デコレータはまだ学習不足なのか、なんの機能なのか分かりません。 みなさんがPyhonは書いてて気持ちがいいとか、楽しいというのですが文法的な明快さが理由なのでしょうかね。 わたしはC++やC#を使っていたのですが、型を指定しないとか、中括弧{}をつけないとかはまだ慣れません。むしろ気持ち悪さを感じてしまいます笑。こわいというか。 もう少しpython になれる必要はありそうですね。
guest

0

python歴1年と短いですが何かの参考にはなると思います。

Python は対話的にプログラミングができるからいい。
→プログラミングって対話的にやってる人いなくない??

対話モードは初心者だからこそあると便利だと思います。
今自分が打ったコードが即座に実行されてすぐに結果が返されるのでわかりやすいです。
他には「これってこれであってるかな?」という時の簡単な確認に使っています。

Python は、いろいろ使えるしライブラリーが豊富、海外でもユーザーが多い。
→ライブラリの使い方がわからない。海外にユーザー多くても英語で読めないので結果使えない。そもそもAPIの説明書を見てもよくわからない。

ライブラリの使い方がわからないことや英語がわからない問題はpythonに限らずどの言語も同じだと思います。
この言語ならライブラリがわかりやすい!というのは聞いたことがりませんし、日本語の文献がいくら豊富でも最新の情報やより深い理解には英語の文献にあたる必要が出てきます。
そもそも、初心者レベルでしたら日本語で十分文献があると思います。

Python は、インストールも簡単だから初心者もOK、Linuxを使ってるひとならコマンドで...
→そもそも初心者ってLinux 使ってるのか? コマンドって黒い画面(コマンドプロンプト)から初心者はやらなくない??

コマンドラインに関しては確かに初心者には分かりにくいとは思います。
ただ、pythonで使うコマンドライン上の作業は少ないので初心者の学習の障害になるという問題はないと思います。
またwindowsは専用のインストーラがあり、macはlinuxと同じ方法でインストールできます。

Python でTweepyを使うなら、pip から簡単に...
→pip ってなに?

Pythonのパッケーシ管理システムです。
これを使えばpythonのパッケージを簡単に管理できます。
https://ja.wikipedia.org/wiki/Pip

投稿2016/01/30 12:14

orange634nty

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manbo

2016/02/01 04:01

Musashi13zさん さっそくコメントきただき誠にありがとうございます。 また、それぞれ疑問についてコメントいれてくださりありがとうございます。 ライブラリーがどれも難しいというのを聞いて安心しました。そういうものなんですね。 わたしはネイティブなプログラマーではないのでCUIやコマンドなどにはうといので、出だしのインストールや環境づくりに、このあたりを多様するのがつまづいたきっかけなのかなと思いました。 もうすこしPython のやり方を学ぶ必要がありそうですね。
tuu_yaa

2016/02/02 05:37

横から失礼いたします。 > 今自分が打ったコードが即座に実行されてすぐに結果が返されるのでわかりやすいです。 これは、実は強力なことです。いろいろな場合に役に立ちます。まずは、「こんな文は Python 的に正しいんだろうか?」というのを即チェックできる点です。それから、これはちょっと発展なんですが、今作っているプログラムを途中まで読込んで、特定の場所で動作を一時停止してその状態で別の命令文を実行させるなど(デバッグ)の作業も簡単です。 最初は苦痛に感じることばかりだと思います(私はそうでした)。ですが、徐々に CUI などの利点は判ってくるのではないかと思います。(CUI 自体は、とても古くさいインターフェースではありますが・・・)
orange634nty

2016/02/04 15:03

manboさん 補足しておくと、ライブラリが難しいのでなく、言語によってライブラリが難しい優しいというのはないということです。結局、ライブラリを使用する際、何をすれば欲しい結果が得られるのか、何でこのような処理を行うのか、そう言ったところがライブラリを使う上で難しい所だと思うのでどの言語がとかはあまり関係ないということです。むしろpythonはpipなどでパッケージを簡単に管理できるので、そう言った意味で初心者でも簡単にライブラリを導入できます。使いこなすのは別ですけど。 tuu_yaaさん 補足ありがとうございます。 自分はデバッグをApatchの機能で行っているのでCUIでできることを知らなかったです。勉強になりました。
guest

0

Pythonのいいところは他の方が書いてくださっていますが、他の言語を知らないと納得・安心できない面もあるかと思います。簡単なコード(関数)をいくつかの言語で書いてみると違いがわかりますが、プログラミングを始めたばかりだとそれは大変ですよね。

なので、色々な言語で同じ処理を書いているサイトで見比べてみるといいと思います。複数種類の言語のベンチマークを公開しているところだと、簡単な処理を異なる言語で書いていて、コードも公開されていたりします。

また、英語のサイトですが、RossetaCodeには本当にたくさんの言語で様々な処理のコードが公開されています。英語ですが、言語名を調べてコードを見比べるだけなら難しくないと思います。例えば、httpでwebサーバからデータを取得するコードなどはここにたくさんあります。

pythonのコードを引用すると、下記の二行です。

python

1import urllib.request 2print(urllib.request.urlopen("http://rosettacode.org").read())

この二行をPythonの対話環境で実行してみて下さい。(URLはそのままだと失敗するみたいなので、好きなURL、例えばhttp://www.google.com/などに変えてみてください。)webページの情報が取得できているのが確認できると思います。

では他の言語はどうかというと、例えば有名なC言語だと

c

1#include <stdio.h> 2#include <stdlib.h> 3#include <curl/curl.h> 4 5int 6main(void) 7{ 8 CURL *curl; 9 char buffer[CURL_ERROR_SIZE]; 10 11 if ((curl = curl_easy_init()) != NULL) { 12 curl_easy_setopt(curl, CURLOPT_URL, "http://www.rosettacode.org/"); 13 curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); 14 curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, buffer); 15 if (curl_easy_perform(curl) != CURLE_OK) { 16 fprintf(stderr, "%s\n", buffer); 17 return EXIT_FAILURE; 18 } 19 curl_easy_cleanup(curl); 20 } 21 return EXIT_SUCCESS; 22}

・・・長いですね。しかも対話環境がないので、一旦ファイルに保存し、コンパイルしてから実行する必要があります。よく見ると libcurl というライブラリも必要なようです。このライブラリも用意して使えるようにしなくてはなりません。pythonならpip ライブラリ名でインストールできるのに、C言語だと・・・書いててちょっと気が滅入ってきました。

C言語はさすがに極端な例ですが、JavaScriptやRuby、PHPなどもあるので、良ければ見比べてみてください。(このあたりの言語は、このくらいの処理だとあまり違いがわかりませんが)

また、Pythonの強みの一つは、標準ライブラリが非常に豊富なことです。先ほどの例でも標準ライブラリのurllibを使用しています。しかも標準ライブラリのドキュメントはほとんど日本語に翻訳されています。始めたばかりだと使い方がわからないかもしれませんが、ちょっとした処理なら標準ライブラリでだいたいなんとかなります。

最後に、参考になるサイトを。公式サイトの日本語ドキュメントが実は非常によく書かれているのでおすすめです。ちょっとした参考書よりずっと量があるので、始めたばかりだとどこから読んでいいかわからないと思いますが、参考書で少し勉強したらチュートリアルを眺めてみてください。基本的な機能が簡潔に(少し簡潔すぎて他言語の経験者向けの嫌いもありますが)紹介されています。

また、言語の基本的な部分が理解できたら、標準ライブラリの2. 組み込み関数4. 組み込み型をざっと眺めてみると、ライブラリ無しでできることが色々書かれていて勉強になります。例えば、「リスト」というデータ構造が参考書で出てくると思いますが、リストの機能(メソッド)はここに網羅されています。書かれていることは非常に多いので全て覚える必要はありません。ただ実際にプログロムを書いてみて、リストでこんなことしたいなー、と思った時に、forループで頑張る前にさっとここを眺めると実は必要な機能が組み込まれていたりするので、いきなり読むというよりは、辞書的なものとして存在を知っておくと便利です。

長々と失礼しました。少しでも参考になれば幸いです。

投稿2016/02/01 12:37

Miyako

総合スコア142

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manbo

2016/02/02 18:37

Miyakoさん さっそくコメントいただき誠にありがとうございます。 また、貴重なサイトをご紹介いただきありがとうございます。 RossetaCodeというサイトは面白いサイトですね。 ほんとにいろんなコードが載っていました。 C言語とPythonコードの比較はわかりやすいですね。 C言語は実用性が低いというか普通に使えるまでにも時間が掛かりそうです。 そう考えるとPythonは優秀ですね。 まだわからないことだらけですが、はやくいろんなライブラリーをつかって 書いてみたいです。
guest

0

私は Pythonista と言えるレベルではないですが、業務でも趣味でも Pytho でコードを書いたことがあり、好きな言語です。ちなみに、書いたことのあるプログラミング言語は 50 種類以上だと思いますし、10,000 行以上書いた言語も 20 種類くらいはあると思いますが、中でも Python は好きです。書いてて楽しいのが大きいです。逆の例でアレですが、業務でけっこう書くことのある PHP は書けますが、書いてて苦痛です。楽しくないので。

という私の話はさておき、Python を始められたとのことですが、プログラミングを始めようと思ったのはなぜなのでしょうか。そこが重要だと思います。

なんとなくプログラミングというものを学びたい、というのであれば、私のおすすめは Excel VBA と JavaScript です。

Excel は統合開発環境としてかなりよくできています。Excel を普段から使っている人にとっては、実際に役立つちょっとした機能を追加していけますのでモチベーションのアップにもなります。マクロの記録機能で手作業でやりたいことをやったものを記録し、そのコードをいじればすぐに汎用的なマクロが組めます。ネット上にも情報が多いのも強みです。

WEB アプリ系を考えるなら JavaScript もいいと思います。Google Chrome のデベロッパーツールなどを使えばデバッグも用意ですし。楽しみながら覚えるには JQuery も使うといいかな、と思います。

ご質問に直接答えていませんが、どうでしょう。

投稿2016/01/30 10:01

unau

総合スコア2468

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manbo

2016/02/01 03:51

unauさん 早速コメントいただき誠にありがとうございます。 50種類以上もの言語を習得された方が、Python を気に入っているとは Python の学習意欲がわきました。ありがとうございます。 unauさんがおっしゃるようにJavaScriptはいいかもしれませんね。最近いろいろできるといわれていますし。 わたしが Python を使いたかったきっかけは、 Cython を使いたいと思ったからで高速で動作するC言語をPythonの簡単さで使えると聞いたからです。 もともとC#を使っていたのですが、Pythonのほうが簡単そうでしたしいろいろな事に使えそうだなと思ったのが学び始めたきっかけです。 たしかに、目的を明確にするのは重要そうですね。それによって言語を切替えるみたいなこともあるかも知れないですし、なんとなくやっても良さを実感しにくいかもしれませんね。
unau

2016/02/01 07:05

プログラミング初心者であれば、「高速に動作する」言語の選択は、最初あまり意識しないほうがいいのかな、と思いました。最初のうちの遅さの原因は処理系よりもデータ構造やアルゴリズムに依存することが多いでしょうし、最近のパソコンを使うのであれば相当重いデータを扱うとかむちゃくちゃ計算量の必要な処理とかでなければ遅くて困るということもないと思いますので。 「自分が使って役に立つものを作りたい」 and 「英語は勘弁」ということであれば、Python は難しいのかもしれません。「プログラミング自体を楽しみたい」というのであれば Python はよいと思います。 そういえば、今は Electron とかもありますし、JavaScript でデスクトップアプリも、という選択肢もありますね。私自身、ちょっと手を付けてみたいと思っています。
guest

0

なかなか面白い回答が並んでいるので、私も個人の経験談(という名のポエム)で語らせていただきます。

ちなみに私自身のスペックは、27歳独身男性、
派遣先で自給1000円で働いているプログラマという名のGitメンターです。

tl;dr

小学生時代; ゲームが作りたくてHot Soup Processor

HSPTV!

小学校3年生まではコミックメーカーという、今風に言えばゲームエンジンでゲームを作っていましたが、アドベンチャーゲームやサウンドノベルから飛翔したく、そこで目に付いたのがHot Soup Processorです。

が、小学3年生レベルの私の知能では、変数は何とかわかったものの、(当時の付属ドキュメントでは)Goto文とIf文だけでゲームを作るという、今考えると恐ろしいコーディング方法を提供されたため、幼いながらそのソースコードの可読性の低さにうんざりして挫折しました。

余談; 昔からあったのかもしれませんが、今はWhileがあったり、オープンソース実装も出てきたので、今後が楽しみと同時に、何か協力したいなと思うこの頃です。

ちなみにこのころ同時に興味を持っていた言語はVisual Basic 5.0でしたが、小学生の私にその開発環境はとても高価なので手が出せませんでした(10万円ほど)。

中学生時代; ガチでゲームを作るならC++なのか?

時は流れて中学時代。誰もが通って挫折するであろうC++と出会います。そして御多分にもれず、ポインタの概念の辺りで飽きてしまって挫折しました。

高校生時代; BSOD頻発Windows、そしてUbuntuとPythonとの出会い

そんな自分に転機が訪れたのは高校2年生の11月頃でした。当時たまたまFirefoxに致命的なバグがあり、頻繁に親に買ってもらったWindowsマシンがBlue Screen Of Deathになりました。

そして私が購読していたWindows100%という今は亡き雑誌に、たまたまUbuntuのディスクが付録でついており、X68000使いだった親父が冗談半分で、
「Ubuntu使ってみたら?」
というので使ってみたわけです。

それはとてつもない感動でした。

パッケージマネージャーによるソフトのインストールで、今までフリーソフトウェアを探し回っては怪しい広告を回避してダウンロードして、どのフォルダに保存するか悩んでいたのがばかばかしく思えました。

そしてそこで提供されているほとんどのソフトウェアは、フリーソフトウェア(ソースコードも見れる)というのだから、こんなに楽しい世界はありませんでした。

閑話休題、Ubuntuを触ったことをきっかけにプログラミング欲がまた湧いてきまして、そこで真っ先に検索に引っ掛かったのがPythonでした。

当時はPythonの日本語ページに良いドキュメントがあったのですが、今は残念ながら消失してしまいました、「インスタント・ハッキング(原文: Instant Hacking - hetland.org)というドキュメントです。

この記事では本当に簡単な、しかし構造化プログラミングでは欠かせないエッセンスが凝縮されておりました。

  • 順次
  • 条件分岐
  • 反復
  • 関数・メソッド化

当時の私は反復の終了条件の間違いに気づくのに3日以上かかっておりました。
しかしながら、キッチンタイマーアプリができたときはとてつもなく感動を覚えました。

今思えば、この感動が色濃く残っているから、Pythonを使い続けているのだと思います。

専門学校時代~新卒; VB.netは楽だねえ……つまらん。

その後、専門学校に進学。学校で使う言語はVB.netでした。

とても簡単でした。マウスでウィンドウが作れるのだから!

でも私はそれに気持ち悪さを覚えたりもしました。
「中のコードはなんなんだ?」
そんなことを思いながらXAMLの存在を知ったりしましたが、やはりPythonでコンソールアプリを作った時の感動よりは薄かったです。

もう少し言うなら、授業でJavaもやりましたがまどろっこしい。むしろ別の授業でやったアセンブラ(COMET2&CASL2)の方がよっぽど楽しかったです。

そして卒業後、新卒で入った会社でVB.net、VB6.0、VC++6.0プログラムの保守を任されたりしましたが、512MBに満たないWindowsXP開発マシンや、現地に違法コピーしたであろうVisual Studioで自分のプログラムの修正を、お客さんの業務稼働中に深夜までやった挙句に上司に、
「なにやってんの?」
と呆れられました。

VC++6.0で制作された案件は、厚さ10cmの仕様書読めばわかるだろ? みたいな投げ方をされて、上司の仕様の問い詰めで頭がおかしくなりました。
ソースコードはきれいだったんです。オブジェクト指向もデータ構造もとてつもなくきれいに実装されていた。
だからこそ、ぼくはそのコードの保守ができる気がしなくて、逃げました。

ということで、Visual BasicやC++はいい言語なのでしょうが、いい思い出はありません。

派遣社員の今

その後職を転々とし、今は最初に申し上げたような、月の生活は家賃光熱費と食費だけに消えてゆくような生活をしておりますが、おかげでいろんな言語を触ってきました。

PHP, C#, Node.js, シェルスクリプト。

それぞれ一長一短はあるものの、よくできた言語だと思います。

まとめ; PHPもJavaScriptもシェルスクリプトもHaskellもいいんだろうけど……まずPythonじゃね?

さて、ここまで話してPythonの何がいいかという話ですが、

各種Linux、macOSに標準搭載

言わずもかなです。OSのコアの部分のいくつかもPythonで書かれているといっても過言ではないでしょう。

(実は)書きたいように書ける

何かと「インデントがー」とか「文の自由度がー」と言われますが、意外と自由に書けます。

ちょこっとしたバッチ的なプログラムを書くのに、わざわざクラスを定義して……ということをしなくても動きます。

もちろん、クラスベースのオブジェクト指向だって組めます。

さらに言うと、内包表記や functools を使えば、関数型っぽくも書けます。

それくらい可能性を秘めてると思います。

私事ですが、CoderDojoという子どもたちにプログラミングを無償で教える、いわばプログラミングの寺子屋みたいなところでプログラミングを教えていたりしますが、言語プログラミングをするときは、まずPythonを教えています。

私個人の高校時代の体験が色濃く残っているからバイアスはかなりかかっているとは思いますが、Pythonほど、
「適度に悩まない言語はない」
と思います。

以上、駄文、長文失礼いたしました。

投稿2017/09/14 07:03

manzyun

総合スコア2244

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manbo

2017/09/14 07:32

manzyunさん コメントお寄せいただき誠にありがとうございます。 中学生からプログラミングとはすごいですね。高校でリナックスとは素晴らしい経歴ですね。 技術あるプログラマーにも、日本は舐めた金額しか払わないってのは問題だと思いますねー。 わたしも某大手IT系の社長につくったものを1時間くらいバカにされてかなり落ち込みましたよ。 わたしはプログラマが職業ではないので、つくりたいものを趣味でつくってるのであれですが、それいらいプログラミングは誰にも見せなくなりました笑。 ホリエモンも中学生時代に自分の作ったものをネットでボロクソに言われ、それ以来自分で作らなくなったらしいです。そのころにねじ曲がったのかもしれませんが。 かたやシリコンバレーとかなら、街みんながプログラマーみたいな感じで、近所のおっさんもエンジニアだったとかで作ったものについていろいろ教えてくれたりアドバイスくれるらしいです。 たぶん気持ちが分かるんだろうと思いますが。 日本の10cm仕様書おじさんに負けず頑張ってくださいね!
manzyun

2017/09/14 07:54

manboさん こんなポエムに目を通していただきありがとうございます。 なるほど、権力者(?)のマサカリ(1時間級)を受けたことがあるとは……私なんかよりすごい経験してますね。 まあ、私も趣味グラマーみたいなものです。趣味だから作りたいものを素直に作った。需要とか問題解決のエレガントさとか、そんなもの自分の中で完結させてしまえばいいんだ。ってノリでやってますね。(だから新卒時代にトラブったとも言えますが……) そのあたりPythonは、 「どうしたらきれいで読みやすいコードになるか」 と考える負担が結構軽減されるので、いまだに好きなのだなあと思います。 結局、モノを作るのは楽しいほうがいいだろう、楽なほうがいいだろうというのが、僕の考えの根底にあって、そこがPythonとマッチしているのかもしれません。 僕自身、manboさんのシリコンバレーみたいな環境作りたいな、プログラミングというのか、パソコンでものづくりするの、楽しいんだけどな。ということを伝えたくて、CoderDojo Sapporoとかでメンタリングしております。 10cm仕様書おじさんに負けないように頑張ります。
manbo

2017/09/15 07:18

manzyunさん こんにちは、プログラミングは単なる道具かもしれませんが、つくりたいものをそのまま表現できるのは結構優れていると思います。その点 Python はいいんですね。Cとかだと簡単な事でも、9割くらいりやりたい事が出来ませんからね笑。
manbo

2017/09/15 16:12

can110さん 情報お寄せいただきありがとうございます。むかしの人はすごいですね。きっと有志で翻訳したんですよね。古えの功労者に敬意を。 アーカイバもいまとなってはすごい貴重な存在。
guest

0

他の方が詳しく回答されていたので、pythonを学べるサイトだけ紹介していきます。
自分はプログラミングやったことなかったのですが以下の無料サイトで独学しました。
基本的に日本語のサイトです。

プログラミングスレまとめ in VIP
プログラミング言語お品書き>pythonから、特徴や入門を学べます。
他の言語についても書いてあります。

ドットインストール
3分の動画で気軽に学べます。

asuka academy
海外の大学の講義を見れます。会話の和訳あり。

lightweight language
量多め。入門から応用、アルゴリズムなども図付で学べます。

Python 3.5.1 ドキュメント
公式ドキュメントの日本語訳。
チュートリアルもありますし、辞書としてわからないことを検索したり。
ただ、初学には用語などわからないこともあるかも。

checkio
英語です。ゲーム感覚で問題を解きながら学習ができます。
レビューしたりされたり、他の人の良いコードが見れたりします。
難しめなので上記を終わらせてからがいいかと。

いかがでしょうか?

投稿2016/02/03 18:57

編集2016/02/03 19:04
torano

総合スコア92

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manbo

2016/02/05 03:16

torano0314さん コメントいただき誠にありがとうございます 独学で学ばれたんですね。すばらしいです。 学習サイトのご紹介ありがとうございます。非常にためになるサイトばかりですね。 プログラミングまとめスレは大変参考になりました。 プログラマーが書いた記述とあって、平易かつ率直な言語の解説が大変になりました。やはりというか、一般の書籍は、売り物だけあってなかなか言語紹介の本質にたどり着けませんね。 たとえばC言語の入門書では、本来ならば「C言語は高速だが非常に難解、習得も実装も相当な苦労が伴う、初心者が学言語ではない」と紹介されていればこれがほんとに正しいC言語の紹介だと思いますが、絶対にそうは書いていません。そういう意味で他の言語との比較を交えた紹介や、コボルやリスプが古代言語!?などと紹介されていたりで分かりやすかったです。
torano

2016/02/05 04:20

学んだ、とういうよりは現在進行形で学んでいる最中です。 今は昔と違ってネット上で学習できるサイトが充実していて、また無料で学ぶ事ができます。 だから学習に関しては、少なくとも基礎はネットで無料で学ぶのがいいんじゃないかと思っています。 まさにその通りですね。僕もそのサイトを見て、漠然と言語を学ぶのではなく、言語の特徴を理解し、自分の目的に合わせて言語を選んで学習する事が大事だと思っています。 お役に立てたならよかったです!
guest

0

Pythonの良さがわからないのであれば、自分が勉強不足ということです。
勉強して、経験を積んでいけば、分かってくるでしょう。

私が良いと思う点は

  1. 書式=文法なので、同じ処理を書いたコードであれば、同じ表記になりやすい。

これは多人数で開発を行う時に非常に重要です。
2. 基本的にリファレンスカウントを用いたオブジェクトライフタイム管理である。
Java, C#, Ruby などと違って、PythonはGCが殆ど必要ありません。

良くないところは、

  1. 2.x と 3.x で文法などがかなり変わっている。

これが原因で質問者の言うように、Webに書かれているコードが動かないと言った結果になってしまっています。
ただ、このような変更はもう、2度と行わないと宣言していますので、3.x のドキュメントが増えてくるにつれ、この問題は解消されるでしょう。

投稿2016/02/02 06:20

katsumiy

総合スコア479

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manbo

2016/02/02 19:03

katsumiyさん コメントいただき誠にありがとうございます。 なるほど、多人数で書いたことはないので分かりませんでしたが、そういうことにもPythonの良さがあるんですね。 あと、1.2系と3系がそんなに違うんですね。学習するにはそのへんを気を付けないとドツボにはまりそうですね。
guest

0

(曖昧な回答で大変失礼します)

具体的な良さは、質問者の方がお調べになっている本の記述や、こちらの回答に実に良く述べられていると思います。しかし、それでも、「でもそれって何が良いのさ?」とお考えになるお気持ちも、わかります。

スタートポイントとしての言語は、実はどのようなものを選択してもそれほど大きな影響はないのかもしれません。実際、私は Ruby からプログラミングを始めて、大学の研究テーマでの必要性から今は専ら Python を使っていますが、正直、どちらからスタートしても今の結果になったろうなぁと考えています。

強いて言えば、Python という処理系のもつ強力さもさることながら、メリットは、その文法の厳密さにあるかもしれません。Ruby や Perl ではこう書いても動いたのに、という文法の数多くが Python では通りません。誰が書いても同じようになるように (There's Only One Way To Do It)、というスローガンが言語の設計の背景にあるからです。

自分の体験なので一般化/断言はできませんが、コーディングスタイル(プログラムの書き方の作法に近いものと私は捉えています)に関する面白い利点もあります。それは、読みやすく明快なコードを意識して Python でコーディングを進めていけば、自然にその流儀を他の言語に応用できるようになっていくということです。私の例では、あまり習熟していない Java 言語を読み書きする必要に迫られたことがあったのですが、Python ではこう書く、という流儀が頭に思い浮かんだときに、それを素直に Java の文法 (型制約などは追加で考えなくてはならないですが) に置き換えたところ、(自分では)後から読んでも読みやすいコードを書くことができました。

正確さ・明快さというものを大切にしながらプログラミングに慣れ親しんでいきたいという方に、Python はお勧めできるのではないかと思います。

・・・要約すると、「Python でプログラミングを練習すると、自然に他の言語でも読みやすいコードを書けるようになる(かも)」ということですね。

投稿2016/02/02 05:19

編集2016/02/02 05:28
tuu_yaa

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manbo

2016/02/02 18:58

tuu_yaaさん コメントいただき誠にありがとうございます。 RubyからPythonにいかれたんですね。たしかに、RubyもPythonに似ているとよくいわれていますよね。わたしもRubyは少しかじりましたが、環境構築が面倒だったのと、CUIに慣れないこともあり、途中でやめました。 個人的にはC#とかC++をつかっていたので、型指定とかリストのつくりやすさに感動して、Rubyにがすごく好きでしたがRubyを使っていることを批難されたこともあって、そんなに悪いならやめようかなと、Pythonをやりだしました。 Rubyがわるいという理由は正直わからず、むしろ自分はいいと思っているのですが、どこがわるいんでしょうかね? Ruby よりも Python がいいのはやはり文法によるところなんでしょうか。 Pythonを学ぶとほかの言語も強くなるのは、心強いですね。
guest

0

ロボットを動かすのにPython使ってます。Raspberry Piという基板を中心にした組み立てキットが売ってて、PythonのAPIが用意されているので、楽しんでいます。写真は、実際に組み立てたロボット。対象年齢は13歳以上と書いてあったので、見た目の印象よりは難しくなかったです。

イメージ説明

ココから取り寄せて購入。
http://www.dexterindustries.com/gopigo/

センサーだけなら秋葉原とか国内の通販で手に入る。
http://akizukidenshi.com/catalog/g/gK-09168/

投稿2016/02/01 13:40

simonTokyo

総合スコア57

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manbo

2016/02/02 18:46

simonTokyoさん コメントいただき誠にありがとうございます。 きれいな写真も掲載いただきありがとうございます。これは車でしょうかね!?かわいいですね。 Raspberry Pi でもPython が使えるんですね。それは知りませんでした。 ロボットはC言語で、、というイメージでしたがそんなことないんですね。 ほんとに、Pythonはいろいろな分野で使えるんですね。ちょっと驚きです。
guest

0

目的を達成するためのコードの書き方が、わりと統一されているところでしょうか。
主観ですが、RubyやJavaScriptのように「なんだ..これは..」というような呪文のような書き方ができない(やりにくい)ので、複数人で開発していてもよみやすいです。

投稿2017/02/13 13:54

kiritsugu

総合スコア127

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manbo

2017/09/14 05:37

kiritsuguさん コメントお寄せいただき誠にありがとうございます。 お返事遅くなりまして大変申し訳ございません。コメントに気がつくのが遅れてしました。。 なるほどですね。確かに書き方が統一されているというのは、言語の設計からして使いやすくなっているんですね。 わたしは、C言語とかC++を学んで来たわけですが、Cとかは正直いらつきます笑。複雑怪奇というのでしょうか。 そういうのは目に見えないところですが、コードが多くなったりテクニカルな事をする時、あとあとパンチが効いてきますよね。非常にためになりました。
guest

0

Pythonで一般的にいわれている利点は、今までの回答者が言われているとおりです。私も趣味や業務でPythonを使います。使う局面と指定は、おもに開発・デバッグツールとかの作成です。
ターゲットはC言語で組むのですが、ターゲットとの対応を組むときに、C言語で組むよりPythonでのほうが格段に早いし、変更に柔軟にたいおうできます(設計の腕にもよるかもしれませんが)
たとえば、ターゲットのWebサーバにアクセスして、その結果のHTMLを取得して解析したりする場合、Pythonもモジュールを使えば直ぐにできます。少々タグが追加になっても簡単に変更できます。
Pythonとそのほかの言語で同じものを作成してみれば、Pythonのすばらしさがわかります。
あと、教育云々ですが、私が作成したPythonコードを開発者に配ったら、C言語がわかるものだと、Pythonを知らなくても、簡単に内容を理解し変更も行うことができました。
その際に、みんな可読性のよさからコードもすごく見通しがよいことに感動しています。
まずは、Pythonと他の言語を比べてみることです。
そうすればPythonのよさが一目瞭然です。

投稿2016/02/02 14:51

MorimasaMatsuda

総合スコア42

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manbo

2016/02/02 19:10

MorimasaMatsudaさん コメントいただき誠にありがとうございます。 いろいろなシーンでPythonをお使いになってるんですね。 正直、自分の知識レベルではデバッグツールに使うとかターゲットがC言語やサーバーという意味がわからないのですが、とにかくPythonがいろんなことに使えるということなんでしょうね。 あとPythonがWEBにも使えるのは、知りませんでした。 Ruby はRailsでWEB開発ができたと思いますが、Pyhotnにもそういうものがあるのでしょうか?
guest

0

pythonの長所
•直感的に書きやすい・読みやすいです。(つまり初心者にやさしい言語)
•統計処理 機械学習に向いています。
•スクリプト言語としては計算が速いです。

たとえば、pythonで作られた動画サイトYoutubeを例に挙げます。
何億ものの動画があるにも関わらず動画を再生してくれます。
これがpythonの力です。

pythonの短所
•速度が速いとはいえ、C/C++やFortranで作製したプログラムには負けます。
•他言語との組み合わせは、やはりそれほど簡単ではありません。

pythonでできること
•WEBアプリ制作
•デスクトップアプリ制作
•業務効率化
•組み込みアプリ制作

参考としてpythonでできることをご覧ください。

※注意
python2.xとpython3.xがありますが文法が少し異なります。
(これを言い換えると互換性がないといいます)

個人的な意見ですがCやJavaJを学んでるいる方だと文法の違いで少し違和感があるかもしれません
例えばセミコロンの有無(pythonはあっても無くても大丈夫)や
for文やwhile文,配列などの違いなどです。

以上です。

投稿2018/04/17 12:38

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

私はRubyistですがPythonの良さを知っている部分だけ語ります。

Sublime textでプラグインが作れる!!
恋するエディタSublime textを使いましょう!
そして、そのマクロやプラグインが組める唯一の言語がPythonです!

以上

Pythonのダメなところ
・タブとか空白で怒られる
・Windowsなど日本語(独自ShiftJIS環境)で得体のしれないバグがでまくる
・↑バグの対応に時間ばかり掛かって本筋が全然進まない
・Linuxなどで日本語が入り込まない環境でしか使えない
・日本語が混じると何も出来なくなるのでフォルダの名前とかに日本語使えなくなる
・Cやjava、PHPなどを使ってた人達には違和感のある見た目
(※Rubyはjavaっぽい書き方できます)
・タブのルール化がされてるから見やすいとか言われてるけど全然見やすくない
・まだコメントとか=とか-とか+で枠作った私のソースのほうが見やすい

【結論】
*Rubyにしましょう!!最高にハイになれますよ(◔ڼ◔)!!!

投稿2016/02/02 21:04

sirosiro

総合スコア26

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manbo

2016/02/05 03:03

minminminkさん コメントいただき誠にありがとうございます。 Sublime text調べてみます。 Pythonのだめなところも、まとめていただきありがとうございます。 分かりやすいですね。 RubyとPython をくらべる事がおおいですが、やはりRubyのほうが使いやすいんですね。
guest

0

【結論】Pythonの良さは?→「ハッカーが使う言語」という部分

pythonは「ハッカーが使う言語」というのを見たことがあります。
「ハッカー」という単語だけで使いたくなります。

「ブラッディーマンデー」という漫画・ドラマのハッカー(主人公)もpythonを使っていたそうです。

投稿2016/02/01 13:17

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

manbo

2016/02/02 18:42

wannabeaHackerさん さっそくのコメントありがとうございます。 Pythonってハッカーの言語なんですね。それは知りませんでした。 ハッカーの人はプログラミング達人というイメージですから 達人が使う言語としてもそん色ないということなんでしょうね。 Pythonはすごい言語なんですね。
manzyun

2017/09/14 05:58

おそらく「ハッカーが使ってる言語」のイメージは、もしかしたらこのエッセイから来てるかもしれませんね。 ハッカーになろう | http://cruel.org/freeware/hacker.html あと私のおぼろげな記憶ですが、映画「バトルロワイアル」のワンシーンでも、高速タイピングでハッキングを行う描写がちらっとありましたかね……。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問