ここから本文です

pythonに苦手な事ってありますか?

kaz********さん

2018/7/2615:06:45

pythonに苦手な事ってありますか?

C言語から始めた自分は、最近pythonという言語に出会い、その記法のシンプルさ、できる事の多さにとても感動しています。
(唯一気に入らないのは、ifやforに付ける:←これ)

もう、プログラミング言語はpythonだけで良いんじゃないかと思うくらい好きです。文句の付けようがない。可読性も高く、記法の無駄もない。

ですが、pythonにも苦手なことってあるのでしょうか?
サーバーサイドにも、webアプリにも、機械学習にも使えるpythonも苦手な事はありますか?

また、pythonより簡潔で無駄が無い言語などありましたら教えて頂きたいです。

閲覧数:
747
回答数:
8

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

nor********さん

2018/7/2919:43:34

> pythonに苦手な事ってありますか?

まあ、あります。
現在のPython本家自体Pythonで実装されていません。
OS回り、デバイスドライバの利用は聞きません。
ミドルウェアでの利用も限定的でしょう。

Pythonに限りませんがマルチスレッドへの対応は今後の課題です。
現状ではスレッドの生成は出来ても、その並列実行には制限があります。

あと自分もよく分かっていませんがPythonそのものを使ったモジュールのライブラリ化、共有ライブラリ化がどうなるかは関心を持っています。

ただ、過去の質問を見た限りですが、なんとなく気持ちは分かるような気はします。
C言語からはじめて、バグ取りで苦労して、Python使ってみたら悩んでいたことが嘘のように、みたいな。
それはそれでいいと思っています。
プログラミング入門にCからはじめる意味はあまり感じないので。

ただ、プログラミング言語が一種類で済ませられるわけではないですから。
Python自体の話もありますが、現在Pythonが広く使われるようになった理由の一つである数値計算ライブラリはどんなプログラミング言語で作られれているか調べてみてください。
Pythonで当たり前のように使えている「辞書(dictionay)」などがどう作られているかとか、使わなくなった変数(オブジェクト)の後始末はどうされているか、それが処理に影響を与える場合がないかとかもあります。
高速に大量のデータを処理する必要のあるシステムでどんな言語が使われているかも。
Rubyという好敵手もいますし。

私はRubyもPythonも嫌いではないですし、初学者にとって好ましい言語だと思っています。実用面でもすぐれた局面は少なくないでしょう。
ですが、プログラミング言語の長所・短所、適応範囲についてはどこかの時点で考える機会を見つけてはどうでしょう。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜5件/7件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

man********さん

2018/7/2815:16:39

kazuya44_6さん、mazeran_shishouさん
如何程の 見識があって、Pythonを讃えているのでしょう?

>pythonより簡潔で無駄が無い言語などありましたら教えて頂きたいです。

Ruby言語なら、{サーバ系、クライアント端末系、大規模データ処理、電卓のような対話型計算、組み込み機器内蔵プログラム}の5分野の入門的コードを網羅的に、百行未満で簡素に書けます。

初学者は、最初に10行の壁で挫折し、次に百行の壁で挫折するものだが、百行の壁は乗り越えたうえで、Pythonに賛辞をあげている人が育っている程度に、Pythonの使い手の裾野は広がっているのだろうか?


【1:◎】Pythonも、モダンな言語の一つだとは認められる;
・null安全でない言語は、もはやレガシー言語だ
https://qiita.com/koher/items/e4835bd429b88809ab33


【2:×】Python3は、文法書が肥大化している
>pythonより簡潔で無駄が無い言語な
RubyもPythonも、本体仕様(ライブラリを除く機能)で出来ることは似ているのに、文法書の複雑さは4倍程度違います。

・Python3の文法書は、約14百行
https://github.com/antlr/grammars-v4/blob/master/python3-py/Python3...

・Python2.5の文法書は、約百行
http://www.antlr3.org/grammar/1200715779785/Python.g

・Rubyの文法書は、約4百行
http://www.antlr3.org/grammar/1160820213459/rubyParserLexerSPGramma...


【3:×】Pythponには、グラフィカルにコード入力できる小学生向けの統合開発環境と、本格的なプログラミングに連続的に移行できるパスが無い;

Ruby言語なら、スモウルビーという入門者向け環境もあり、”スモ-ルビー甲子園”なる小中高校生が参加した大会もあります。

・スモウルビー入門(1) 導入から起動まで
https://smalruby-koshien.jp/documents/entry_for_smalruby/top.html

この”スモールビー”は、イッパシのRubyコードを編集できます。
三輪車のように幼児期にしか使えないscrachという小学生向け開発支援ツールがあるが、scrachは本格的なプログラムに 連続的に移行できません。
Rubyなら、補助輪付き自転車みたいな入門環境として”スモールビー”を使い、補助輪を外して本格的なプログラムに、連続的に移行することもできます。


【4:×】初等アルゴリズムのライブラリ化が不揃い;
Ruby言語は、”Ruby on rails"が出来るまでの長い蝉のような潜伏期間に、初等アルゴリズムの標準ライブラリ化が統制拡充して、整備されています。
ところが、Pythonのコミッターには”永久凍土問題”があって、PIP等の非標準ライブラリで非統制なまま 拡充してきた経緯があります。
”ライブラリが統制されていない状態”、つまり「オモチャのレゴブロックと、レゴブロックの類似品とが、微妙な穴の位置の差異で、繋げない」的な、使い難さがPIP公開されている拡張ライブラリに在ります。

多分、その差によって、下記のような”初等アルゴリズム”を多段に組み合わせる御題が降って来た時に、サクットPythonコードを書けた人が 出てきていません。


・「虫食い算」の場合、Ruby言語では正味70行。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q111450313...
http://ideone.com/jUwrBw

・「メモリには入りきらない程度に大量のレコードから、中央値を”高速に計算するコード”」の場合、Ruby言語では約百行。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q131558286...
http://ideone.com/0g2Ne8

・1行表示のみのWebサーバコードを、Pythonだと6行
http://rosettacode.org/wiki/Hello_world/Web_server#Python

・1行表示のみのWebサーバコードを、Rubyだと2行
http://rosettacode.org/wiki/Hello_world/Web_server#Ruby


>できる事の多さにとても感動しています。
さて、質問者殿は、上記アルゴリズム問題を、百行未満のPythonコードとして、サクット書けるだろうか?

【5:×】Pythonは、組み込み機器のような制約の多い環境への移植性が低い;

C言語とC++言語とは、「”a=1.0 / 0.0”が "a=NaN;"と非割り込み処理として定義されているか、”0 divice exceptionが発生するのでaは不定なまま”となっている処が、汎用OSが無い組み込み環境への移植性の差になっています。
C++言語の場合、「先にC++向け割り込みハンドリング環境が無いと動き出せない」ということが、言語自身の移植において「鶏が先か?卵が先か?」的な課題になっています。
それが「100%、C言語で記述し続ける方針が維持されているCRubyや,組み込み機器向けのmRuby」での移植・開発の実例で確認できるでしょう。

そして、GPGPUというデバイスの向こう側の制約された環境にRuby実行環境を移植しようというプロジェクトも動いています。
・Implementation of Ruby/Cumo, a CUDA-aware version of Ruby/Numo
https://www.ruby.or.jp/assets/images/ja/news/20180501.data/seo.pdf

・mrubyをブラウザで実行するまで (WebAssembly)
ブラウザで、Opal等のエミュレータではなく、ネイティブのRubyが動かせる時代がきそう。
https://qiita.com/noontage/items/da846e78eebd1d3b2a78

かたや、C++で実装されているCPythonは、Raspberry Piのような小型機器ではあっても汎用OSであるLinux上でしか動いていません。

・Compiling Python to WebAssembly
下記のQ&Aは、PythonはC++にはコンパイル出来るが、WebAssemblyへの変換はカナリ限定的にしかできないとか、”永久凍土的”応答になっています。
https://stackoverflow.com/questions/44761748/compiling-python-to-we...

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

maz********さん

2018/7/2812:42:43

僕もPythonを使っています!あの簡潔にかける感じたまりませんよねww唯一苦手と言ったら(Verにもよります)BGMや効果音の挿入ですかね… 少しめんどくさいですし、それはいいとしてもちょっと重くなるのが早い気がします。個人的な意見につき失礼します
あとラズパイというソフト?はオススメですよ!コンパクトでデータ量が多い!

isv********さん

2018/7/2723:30:10

> Pythonにも苦手なこと
既にほかの人が述べているので割愛するとして、 Python が苦手な分野は Julia があるので、併用すればいいのでは?

> Pythonより簡潔で無駄が無い
あるにはあるが、すべてマイナー言語。日本国内では見向きもされない。
不足しているものやライブラリは自分で用意することが求められる。

たとえば、
・Wren (レン)
http://wren.io/

・Ring (リング)
http://ring-lang.sourceforge.net/

などがありますが、気に入るかは別。もっと知りたいならばロゼッタコードをどうぞ。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

kat********さん

2018/7/2723:04:14

>pythonにも苦手なことってあるのでしょうか?
書いた順にインタプリタが順次実行していくため、
最適化が難しく、速度が遅い。

ガベージコレクタの動くタイミングは速度が落ちる。

数値計算とか特定の用途に特化した言語には
当然、速度で負ける。

PythonはC言語の上に乗っていて、
Cを使えば、手軽に速度向上を図れるが、
代わりにシンプルさが無くなる。

stu********さん

編集あり2018/7/2716:41:52

プログラミング言語は人間の言葉(英語 )に近くなればなるほど、処理速度は落ちると言われています。
ここが苦手なところですかね。

cから始めたということはPythonがもっているオブジェクト指向の概念はまだ勉強していないのでしょうか。まだまだcに勝っているとことはたくさんあるのでカプセル化、継承、ポリモーフィズムなど調べてみてください

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる