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

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

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Python

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

Q&A

解決済

5回答

8122閲覧

PythonerがC#を学ぶメリット

nono1234

総合スコア25

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Python

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

0グッド

1クリップ

投稿2020/05/20 11:38

編集2020/05/20 14:20

開発系の業務に就くことになったのですが,会社からはC#で書くように指示されています.
自分はPythonに関しては割とかける方だと思うのですが,C#は初めてです.
そこでなのですが,C#でコードを書くメリットを教えて欲しいです.
よく挙げられるデメリットとしてPythonは遅いというのが挙げられますが,Cythonなどを駆使すればC#に匹敵する速度になるとは思います.(C#じゃないと間に合わない位の速度を要求される場面は現実的にあるのでしょうか?)
業務としては,コードの中身を見られたくないのでexeファイル形式で納品することになっているそうなのですが,PyarmorやPyinstallerを用いれば比較的容易に難読化,exe化できると思っています.(実業務でどの程度までコードを守る必要があるのかもわかっていません)
一応,javaやCは少し触ったことがあるので,型やポインタなどは知識としては知っています.
これらの知識はあるという条件を満たした上で,果たして新しくC#を学習し,C#で開発を行うメリットがあるのか教えていただければ幸いです.
(ありがちな会社の都合みたいのも教えていただければ幸いです。)

まとめ
Pythonのメリット
書きやすい

pythonのデメリット
遅い(Cythonで改善可能?)
コード秘匿性(Pyinstaller,Pyarmorで改善可能?)

C#のメリット
現場では広く使われている
GUIアプリケーションの制作が容易
Pythonと比べて速い

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

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

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

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

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

gentaro

2020/05/20 13:10

最低限「C# メリット」でググって質問してます? ちゃんと調べた上での質問であれば、具体的にメリットとされる事項についての言及があって然るべきだと思いますが。
nono1234

2020/05/20 14:00 編集

ご質問ありがとうございます。 自身で[Python/C#, メリット/デメリット]などでは一通り検索しておりましたが,C#でのメリットは現場では広く使われていること,Pythonよりは速いことなどのメリットを挙げているのがほとんどでした. 環境導入などの難易度に関してはAnaconda+Pycharm入れるのとVisualStudio入れるので,大した違いがないと感じました. 速度に関してはCythonで同等まで持っていけると思っておりました. コードの秘匿性という観点に関しては,PyarmorとPyinstallerで解決できると思っておりました. またGUIを有するアプリケーション制作の簡易さに関しては確かにC#に軍配があがると思いますが,おそらくPythonでもよっぽどのものでなければ同等のことが可能であると考えておりました. これらの内容に関しては,質問文では分かりにくい(GUIアプリケーションに関しては,記載すらしていない)書き方をしていたかもしれないので,修正させていただきます.(ほかに何かありましたら教えていただければ幸いです)
guest

回答5

0

会社からの命令は「言語を選定せよ」ではなく「C# を使え」ですよね?
あなたが考えるべきは C# を使うメリットではなく、それに反してまで Python を使うメリットです。

投稿2020/05/20 11:49

Zuishin

総合スコア28669

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

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

nono1234

2020/05/20 11:59

ご回答ありがとうございます。 Pythonを使うメリットとしては,「pythonは書きやすい」ということに尽きます.ここで,pythonを使って良いという流れを作ることが出来れば,今後何年間の間の業務効率を上げることができると考えています.
Zuishin

2020/05/20 12:01 編集

C# は非常に生産性の高い言語です。Python に適応しているのがあなた一人であればそれはメリットにはなりません。今までの資産の保守は誰がするのでしょう? そしてこれから作るものの保守は誰がするのでしょう?
nono1234

2020/05/20 12:27

今までの資産の保守,生成物の今後のメンテナンスという観点は確かに抜け落ちておりました. 会社もPythonの書きやすさ自体は認識しており,使用している人もいます. これからはC#の勉強もしつつ,社内の勉強会などで徐々に布教して行こうかなと思います. 非常に厳しいご指摘ありがとうございました.新環境に舞い上がっていた私にとって非常に参考になる意見でした.
guest

0

ベストアンサー

C# と Python のどちらを使うのがいいかは開発内容によります。

開発系の業務に就くことになったのですが,会社からはC#で書くように指示されています.自分はPythonに関しては割とかける方だと思うのですが,C#は初めてです.そこでなのですが,C#でコードを書くメリットを教えて欲しいです.

Python はあくまでスクリプト言語であり、exe 形式で動かす1つのソフトウェアを作成するのには向いていないと思います。
Python の exe 化は Pyinstaller がありますが、Python インタプリタと使用ライブラリを全部まとめたものになるので、バイナリサイズが他の言語で開発した場合に比べ、非常に大きくなります。

特に Windows で中規模以上の GUI アプリケーションを開発する場合は C# のほうが優れています。Python も tkinter といった GUI ライブラリがありますが、小規模な GUI アプリを作るのを目的としたもので、中規模以上の GUI アプリケーションを開発する場合は機能的に不十分です。

よく挙げられるデメリットとしてPythonは遅いというのが挙げられますが,Cythonなどを駆使すればC#に匹敵する速度になるとは思います.(C#じゃないと間に合わない位の速度を要求される場面は現実的にあるのでしょうか?)

たしかに Python より C# のほうが実行速度は早いですが、速度を重視するのであれば、C++ で開発したほうがよいです。そのため、速度だけが理由で C# を選ぶということはあまりないのではないでしょうか。

Cython を使うケースは、Python のコードの一部だけを高速化したい場合に使うものであり、ソフト全体の高速化が求められる場合は、ほとんど Cython で書かなければならなくなり、本末転倒です。

業務としては,コードの中身を見られたくないのでexeファイル形式で納品することになっているそうなのですが,PyarmorやPyinstallerを用いれば比較的容易に難読化,exe化できると思っています.

難読化を重視するのであれば、機械語にコンパイルされる C++ で開発したほうがよいです。
以前、C# で開発したことがありますが、逆コンパイルするソフトでコードの中身が見れました。

これらの知識はあるという条件を満たした上で,果たして新しくC#を学習し,C#で開発を行うメリットがあるのか教えていただければ幸いです.

スクリプト言語以外の C#、Java または C++ のどれかを学んでおくことは十分価値があると思います。

まとめ

C# と Python を比較した場合のユースケース

Python

  • Web アプリケーション (言語より Web フレームワークの選定が第一)
  • 機械学習、画像処理を試す場合 (機械学習や、画像認識を使うアプリとして開発するなら、C++ を使う場合が多い)
  • アプリにするほどではない処理を実行する場合

C#

  • Windows 上で exe 形式で動かすアプリケーション (とくに GUI アプリケーション)

投稿2020/05/20 12:26

編集2020/05/20 12:41
tiitoi

総合スコア21956

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

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

Zuishin

2020/05/20 13:12

C# は今は Windows 上のアプリケーションの開発機能の進化が止まり、クロスプラットフォーム化やモバイル方面が強化されています。ゲームなら Unity で、その他モバイルツールは Xamarin で。また同一言語で Web アプリケーションのフロントとバック双方を記述できるようになる Blazor という野心的な機能が開発されています。 https://blog.ecbeing.tech/entry/2020/01/28/122211
tiitoi

2020/05/20 13:20

C# = Windows の GUI アプリという認識で止まっていたのですが、最近はマルチプラットフォーム化が進み、モバイルや Web 方面でも使われるようになっていたのですね。 情報ありがとうございます。
nono1234

2020/05/20 14:13

ご回答ありがとうございました. たくさんの方に様々なアドバイスをいただいたのですが,言語としての機能面からPythonとC#の優劣を示した分かりやすい回答を下さったためベストアンサーとさせていただきました. 今後保守やGUIを求められる場面もあるかと思うのでC#も勉強しようと思います. 本当にありがとうございました.
退会済みユーザー

退会済みユーザー

2020/05/20 14:17

PythonとC#の優劣なんて示してないと思うけど?
退会済みユーザー

退会済みユーザー

2020/05/21 00:42 編集

開発言語は所詮道具であり、リンゴの皮を剥くのにナイフを使うか包丁を使うかとか、その程度の話です。使い捨てのプログラムではコンパイル言語よりもスクリプト系で済ませたいですし、大規模開発では型付けの弱い言語はあまり使いたくありません。 できる開発者は、大体複数の言語を使えますし、新しい開発言語の習得自体もそれほど時間は掛かりません。その上で、プロダクトに最適な言語を選択します。あとは、他の皆さんが言ってるように既存資産の問題や、開発メンバーのスキルで選ぶ場合もあります。他にも言語の将来性や総合開発環境・ライブラリ・情報の充実度、目を向けないといけない部分は多いです。現状、トータルバランスに優れているのがC#かと思います。というか、VisualStudioが汎用性高すぎて強い。 新しいものを会社に推す姿勢自体は悪くないと思います。但し、導入資料作成や勉強会、個別対応など、軌道に乗るまで全部自分が面倒見てやるくらいの堅い意思が必要です。
Zuishin

2020/05/21 00:50 編集

exe 化して出荷ということなので、たぶん Windows 用のデスクトップアプリケーションなんでしょうが、Tkinter を布教するのはかなり大変だと思います。 「Python は書きやすい」の一点張りで推そうとしても「いや書きにくいけど?」と一蹴されることでしょう。導入することで開発効率は目に見えて落ちると思います。
guest

0

(ありがちな会社の都合みたいのも教えていただければ幸いです。)

世間的に「ありがち」なのかどうかは知りませんが,
仕事の依頼元が「C#で」とか「C++で」とか言語指定してくる場合があり,
ならばそれで書くしかないです.

ソースも納入する場合,相手先の担当者が読んだり変えたりできる必要があるとかそういう理由があるかと.

開発環境に関しても「Visual Studio のXXXで」とか要望されれば
「そのバージョンだと言語のあの機能がまだサポートされてなくて面倒…」とか思っても結局それでやるしかないとかも.


まずは「今回C#なのは何故ですか?」って会社の人に率直に訊いてみては?
そこでPythonを推すことが可能な状況かどうかが判断できるかと.
(まぁ,例え推せそうでも推さないでおく方が無難かと思いますが)

投稿2020/05/21 01:18

編集2020/05/21 01:58
fana

総合スコア11996

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

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

YAmaGNZ

2020/05/21 04:27

「今回C#なのは何故ですか?」じゃなくって、もともとC#で開発している部署に移動になったけど、自分が使えるのがPythonだからPythonにしてよって言っているようにしか思えませんけどね。
fana

2020/05/21 04:58 編集

「今回新規開発物の言語がC#って話になった→Why?」なのか, 「既にC#な開発に参加するんだけど,僕は宗教的にPython側なわけで,DoしたらE?」なのか, まぁどちらだとしても,【C#な理由を知りたいなら訊いてみればよかろう】という点に関しては一緒ですけどね.
guest

0

(ありがちな会社の都合みたいのも教えていただければ幸いです。)

逆になんでPythonなのでしょうか?
環境がよく分かりませんが、C# と言うと、Windowsかと思います。一般に販売されているWindows環境で、Pythonは動きますか? その環境設定は誰がするでしょうか? exe化できるとの事ですが、その環境は?
C#だったら、Visual Studio買ってくれば、OK。それも Windowsと同じMS製。まあ、リスクも少ないと考えるでしょう。

Pythonにした場合、その環境設定とかメンテナンスとか、どうするのか考える必要があります。多分、担当も変わる事もあるでしょう。あるいは外注に出すかもしれません。それらを考えた場合、わざわざ、Pythonにするメリットがあるかです。
速度に関しても、今時のPCなら、問題にされる事が少ないので、関係は無いと思います。(一部のアプリを除く)

なお、C#の場合、exeファイルでの納品が一般的で、ソース秘匿だからと、言われるのはあまりないとは思いますが、、、。(本気で秘匿なら、別途、難読化が必要)

一般的な業務の場合、会社としてのメンテナンスが重視されると思います。(あなたが、一生面倒みますか? という事)

投稿2020/05/20 12:28

pepperleaf

総合スコア6385

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

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

nono1234

2020/05/20 14:08

>環境がよく分かりませんが、C# と言うと、Windowsかと思います。一般に販売されているWindows環境で、Pythonは動きますか? その環境設定は誰がするでしょうか? exe化できるとの事ですが、その環境は? Visual studioの導入とAnacondaの導入で大差はないかと思いますがどうでしょう? しかし,確かにpythonでexe化は,初心者には難しいと思いました. また,今後の保守についての観点も自身には抜けていました. ご指摘ありがとうございます.
maisumakun

2020/05/21 01:20

> Visual studioの導入とAnacondaの導入で大差はないかと思いますがどうでしょう? いえ、プログラムを「実行する」側にVisual Studioの導入は不要です。.NET Frameworkがあれば動かせます。
workaholist

2020/05/21 02:39

そして.NET FrameworkはWindowsには最初から入っていますね。 バージョン合わせるくらいを気を付けるだけで。
guest

0

会社からはC#で書くように指示されています.

既にあるプロダクトがC#であれば、別言語を採用するほうがスイッチングコストがかかります。

PyarmorやPyinstallerを用いれば比較的容易に難読化,exe化できると思っています.

これらはPythonのコードと実行環境をセットにしたものを作るだけであって、コードの抽出も可能です。

投稿2020/05/20 11:50

maisumakun

総合スコア146018

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

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

maisumakun

2020/05/20 11:56

> 果たして新しくC#を学習し,C#で開発を行うメリットがあるのか教えていただければ幸いです. 会社の中で生き残っていける、というのはメリットではないのですか?
nono1234

2020/05/20 12:25 編集

ご回答ありがとうございます. 既にあるC#で書かれたプロダクトの保守などに必要という観点に関してはたしかにその通りだと思いました.業務上,確かにそのようなケースは想定されます.これは抜け落ちていた観点でした.ありがとうございます. >会社の中で生き残っていける、というのはメリットではないのですか? 確かに会社で生き残るということは大事ですが,C#にしがみつづけるという考えだとチーム自体が他社と比べて遅れていく一方だとも考えています. (私もPythonにしがみつづけているだけなのかも知れませんが) 会社もPythonの書きやすさ自体は認識しており,使用している人もいます. C#の勉強もしつつ,社内の勉強会などで徐々に布教して行こうかなと思います. 非常に厳しいご指摘ありがとうございました.新環境に舞い上がっていた私にとって非常に参考になる意見でした. >>PyarmorやPyinstallerを用いれば比較的容易に難読化,exe化できると思っています. >これらはPythonのコードと実行環境をセットにしたものを作るだけであって、コードの抽出も可能です。 ここに関しては初学者なのでもう少し詳しく説明していただければ幸いです.実際にC#でコード書き,exe化した場合と比較してコードを守るという観点ではやはり.C#の方が軍配が上がるということでしょうか?
pepperleaf

2020/05/20 12:32 編集

実際に詳細まで確認してませんが、C#(.NET)の場合、exeファイルからの コードの追跡は可能と聞きます。少なくとも、デバッガレベルでの追跡は可能らしいです。 それを理由にC#選択は、? かと。
Zuishin

2020/05/20 13:04

デバッガで追跡可能というのは、ソースと pdb が手元にある場合じゃないでしょうか。 それはともかく、コンパイルにしても難読化にしても「解析しにくくなる」というだけで「解析できなくなる」わけではないので、それはどっこいどっこいですかね。.NET アセンブリを更に難読化するツールもありますし。
pepperleaf

2020/05/21 11:49

デバッガと言っても、アセンブラ(MSIL)でという事。バイナリを読むよりは楽でしょう。(バイナリでもハックされた事もあるが)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問