老親介護に悩む30~60代の方へ
老親介護ねっと[老人ホーム編]
トップ 老人ホームの選び方 介護関連ニュース 新規オープンホーム情報 老人ホーム取材レポート お問い合わせ リンク集 Q&A

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

回答受付中の質問

pythonの事

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

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

投稿日時 - 2018-10-10 15:19:30

QNo.9546202

暇なときに回答ください

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

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

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

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

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

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

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

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

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

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

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

投稿日時 - 2018-10-12 11:40:14

ANo.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-11 15:51:30

ANo.2

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

投稿日時 - 2018-10-10 21:49:01

ANo.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

投稿日時 - 2018-10-10 17:13:29