本文へ移動
サポートシェアリングソリューション
OKWAVE Plus

このQ&Aは役に立ちましたか?

締切済み
※ ChatGPTを利用し、要約された質問です(原文:pythonの事)

pythonの事

2023/10/13 04:36

このQ&Aのポイント
  • PYTHONとは、BASICとPASCALを組み合わせたプログラム言語です。
  • PYTHONはシンプルで読みやすく、初心者にもオススメの言語です。
  • PYTHONは幅広い用途に利用できる汎用の言語であり、データ分析や機械学習の分野でもよく使われています。
※ 以下は、質問の原文です

pythonの事

2018/10/10 15:19

プログラム言語のPYTHONは、BASICとPASCALを足して2で割ったような物と思いますが、如何なものでしょうか。

※OKWAVEより補足:「NEC 121ware :デジタルライフ全般」についての質問です

回答 (4件中 1~4件目)

2018/10/12 11:40
回答No.4

BASICもPASCALも理解していないとしか言いようがありませんね。
少なくとも足して2で割るというような開発系じゃありませんから。

発想は検討が付きます。おそらくWindowsでVBなんかでプログラムを作ったりDelphiでDBのソリューションなんかを簡単に作ったことがあって、この程度簡単なもんかな、と思ったということでしょう。
その発想だったら全然違いますね。

簡単は簡単ですが、それらと全然違うのは開発系がクローズしていないということです。linuxみたいなものを理解していないとわからないかもしれませんが、オプショナルな機能は本体とは別に導入(まあインストール)して、開発系から触れる状態にしておくだけです。そのため、開発系全体は多種多彩な状況を作れ、自分自身が全然開発していない、そもそも動きも操作法も知らないような処理を平気で利用できるのです。当然OS自体を制御するということも可能だし。

バグ、というのはどういう場合にできるかというと、アルゴリズムを一つ作ったらそこに必ずバグがあると言われるようなもので、プログラムを1から作成したらバグだらけです。1から作らなければそんなことは気にする必要が無いんです。

こんなことできないだろうと思うようなことがPythonを使うと平気に簡単にできます。C++なんかで苦労したことがあれば、まるで嘘のように。また、Javaのようにデプロイ時におっそろしく重たいものを持ち込むという必要もありません。

近いといわれるのはR言語なんかで、これもとてつもない理解でききれないような統計手法を、数学者のように偉そうに使って処理できます。

なお、おなじみのスクリプト言語ですからインタープリタで、そういう意味でもDelphiとは全く異なります。Pascalは文法の間違いさえ片付ければもうバグはないと言われるほどの完璧な設計をされていますから、コンパイラが許したらそのコードは必ず間違いなく動きます。

Pythonはそこを通らなければ不具合は発見できないので品質カバレッジが面倒です。そのためクラス設計をし、処理をパタン化ローカル化するので、はっきり全体は構造化します。最新のVBはある程度これはできますけど、所詮ドットネットのお世話をしているだけです。

最終的に不可能だと思われるようなものを実現できるのがPythonで、これをBASICと比較するなら悪魔と豚を比較するようなものであり、Pascalと比較するなら悪魔とサラブレッドを比較するようなものです。

このQ&Aは役に立ちましたか?

この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。

質問する
2018/10/11 15:51
回答No.3

> プログラム言語のPYTHONは、BASICとPASCALを足して2で割ったような物と思いますが、如何なものでしょうか。

全然違いますね。
Pascalは「厳密過ぎる程厳密」な定義をアレコレ持っていますが(これは元々、教育用を意図して設計された為)、Pythonはそういう意味で言うと割にデタラメです。
そもそも、現存の言語(と言うより「それなりに使われて残ってる言語」)で

「Pascalに似てる」

と言う言語を探す方が難しいでしょう(Delphiを除き)。

BASICに関しては保留です。
まあ、殆どの人の頭の中で思い浮かぶのは「昔なつかしいBASIC」なんでしょうけど、ISO準拠の「公式仕様」であるFullBasic前提で考えると、「構造化プログラミング言語」としては似てるかもな、って程度でしょうね。
なお、こういう話になると

「BASICはインタプリタだから・・・」

って話が出ますが、実はそれは本質的な話じゃあありません。
「インタプリタかコンパイラか」と言うのは通常、「実装上の都合」であって、仕様で要求されてる事は(ほぼ)ないのです。
つまり、例えばC言語インタプリタと言うのも「仕様上は存在しうる」わけで、単に現存してる主流の処理系の実装を見て「C言語はコンパイラ型言語だから・・・」と言うのも実はナンセンスなんですよね(結構な確率でそういう事を言う人が多いんですが)。
同様に、「BASICがインタプリタである」ってのも仕様上は要求されていない(筈)です。事実、BASICは早い段階で(研究上で使ってるような)大型コンピュータだとコンパイラが登場しています。一方、昔のPCでBASIC「インタプリタ」が多かったのは、所々の事情であって、BASICそのものが「インタプリタでなければ認められない」わけではないのです。

と言うカンジで、Pythonが

「BASICとPASCALを足して2で割ったような物」

と言うのは総じて無理がありますね。

一方、Pythonは、設計段階から意図的に「他の優れた言語の特徴を取り入れよう」としてたのは事実です。
大体、一般で言われているのは

・構文的にはABCと言うマイナー言語の特徴を取り入れている。 -> インデントでブロック構造を表す(オフサイドルールと呼ぶ)。

ABC入門: http://www2.airnet.ne.jp/sardine/complang/ABCintro.html

・Lispの機能をいくつか借りてきている -> ラムダ式(無名関数)、高階関数(関数を引数に取れる関数)、等

Lisp プログラマのための Python 入門: http://www.unixuser.org/~euske/doc/python/python-lisp-j.html

・Haskellと言う「最先端の」関数型言語から機能を借りてきている -> 内包表記

リスト内包表記(Haskell): http://walk.northcol.org/haskell/lists/#_%E3%83%AA%E3%82%B9%E3%83%88%E5%86%85%E5%8C%85%E8%A1%A8%E8%A8%98
リストの内包表記(Python): https://docs.python.jp/3.5/tutorial/datastructures.html#list-comprehensions

・Iconと言うマイナー言語から機能を借りてきている -> ジェネレータ

ジェネレータ(Icon): https://ja.wikipedia.org/wiki/Icon#%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%A8every%E6%96%87
ジェネレータ(Python): https://www.python-izm.com/advanced/generator/

・Smalltalkと言う「オブジェクト指向言語」から機能を借りてきている -> メタクラス

メタクラス(Python): https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%BF%E3%82%AF%E3%83%A9%E3%82%B9#Python%E3%81%A7%E3%81%AE%E4%BE%8B
メタクラス(Smalltalk): https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%BF%E3%82%AF%E3%83%A9%E3%82%B9#Smalltalk%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%A1%E3%82%BF%E3%82%AF%E3%83%A9%E3%82%B9

・C言語から機能を借りてきている -> printの「フォーマット指定子」

フォーマット指定子(C言語): https://www.k-cube.co.jp/wakaba/server/format.html
フォーマット指定子(Python): http://pract.webcrow.jp/pages/contents/python/print-formats

と、「結構たくさんの言語から」機能を借りてきているので、「どれとどれの間の子」ではないのが一目瞭然でしょう。
敢えて言うと、「色んなプログラミング言語の混成体」の一つがPythonであると思われます。

2018/10/10 21:49
回答No.2

 分かりやすく知りたいと言うレベルなら、それで理解が進めばいいのではないでしょうか。厳密に言うと、プログラム言語を、似ている部分とそうでない部分とに分け、2で割ったように分類できるかということですね。

2018/10/10 17:13
回答No.1

どうでしょうね。
インタプリタ型って意味で言えばBASICに近いのかも知れませんね。PASCALは分類するならコンパイラ型になるでしょうから。
インタプリタ型・コンパイラ型って言うのでプログラム言語を分類するのもナンセンスって話もありますね。
https://dic.pixiv.net/a/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E

お礼をおくりました

さらに、この回答をベストアンサーに選びますか?

ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。