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

解決済みの質問

人工知能やプログラミングなどを学ぶのに必要な知識

大学に通う傍ら、専門学校の夜間コースで人工知能やプログラミングなどのいわゆる情報工学?系を学びたいと思っています。
文系学部ですが、IT技術や人工知能の発達が目覚ましい現代に合わせて、その分野の知識をある程度身につけ、将来の可能性を広げたいです。
しかし理系の知識は全然ありません。
とりあえず高校の履修範囲までは勉強してから、専門的なことを学びたいと思っていますが、必要な基礎知識は何がありますか。
物理基礎、物理、数学1a 2b 3 は必要なのかなと思っていますが…

投稿日時 - 2015-09-22 23:14:10

QNo.9052170

困ってます

質問者が選んだベストアンサー

 まず専門学校の実態です。専門学校のシラバスのコース分けは、各校で勝手にやってますから、以下のコース名は一般的な話と思って下さい。

 専門学校はビジネススクールです。実際にプログラムを行う製造に直接関わる工程を、下流工程と言います。それに対して設計・企画・業務管理などの管理業務の比重が大きいところが上流工程です。それらに対応して概ねコースは、プログラマー(通称PG),プロジェクトマネージャー(通称PM),ITアーキテクト(通称IA?)に分かれます。

 プログラマー(PG)は現場要員です。単にプログラムを書く技術を身につけたいなら、ここです。ここを出た人は、企業での即戦力になり得ます。逆に大学の情報系を出た人は、プログラムが下手くそだったりします。手を動かした量で能力が決まるからです。ここはそういうところです。

 プロジェクトマネージャー(PM)は、主に業務の工程管理を行います。どんな仕事にも納期があり、IT業界はほとんど人件費で成り立っている世界なので、PMは重要になります。顧客要求のヒアリング、現場意見を吸い上げて顧客への提案・プレゼンもやります。大きな専門学校なら、ヒアリング・提案・プレゼン方法も教えてくれます。

 ITアーキテクト(IA?)という職種は、じつは正式にはありません。PGとPMは正式な資格なので、認定試験があります。ITアーキテクトは、PGとPM両方の素養を持った人材です。現在のソフト開発においては、OSとデータベース・エンジンと開発言語の選択と組み合わせで、工期に大きな違いが出るからです。もちろんその選択は、業務目的(顧客要求)にも適ったものでもなければなりません。

 PG,PM,IAを総称して、一般にはSE(システムエンジニア)と言われますが、これも正式な職種名ではなく、巷に流布しているあだ名です。ちなみに上記は昼間コースです。夜学なら、さらに低レベルでしょう(←怒られそうだが)。

 あなたの目的に適うものは、ありましたか?。

 次に必要な基礎知識ですが、例えばよく目にする業務ソフトに、経理・構造解析・電磁場解析などがあります。ではPG,PM,IAは、これら専門分野の知識があるのかというと、通常は全くありません。それでもそれなりの物が開発されるて来るのも、また事実です。なので極端に言うと、物理も数学も不要です。プログラミング技術さえあれば、開発は可能なんです。もっとも専門知識があるに越した事はないので、自分のような専門分野からの転職組もいます。ただし次のような事は、当然ながらあります。

 開発中のソフトの「取り扱い説明書」や「マニュアル」を上手く書ける能力というのは、ひそかに大事です。いかにわかりやすい文章を書けるかという、国語そのもでなく国語力が試されます。また普通の作文より論理性を求められるので、数学そのもでなく数学力も試されます。

 で、人工知能なんですが、人工知能の工学的定義すらないのが現状ですからね(^^;)。大学のその手の研究室で勝手に定義して、もしくはアヤフヤなままやられてると思います。#4さんの仰るS式やλ計算も、もともとはチャーチ,チューリング,ゲーデル,コーエン辺りから出てきた話で、今では計算理論としてまとめられてますので、やはり大学の、それも数学科辺りというのが普通です(情報系でも教えてるかも知れないが)。

 次の本は、恐らく世界初のプログラミング学に関する成書(教科書)です。恐ろしくお高い本ですが、たぶん大学の図書館にはあると思うので、斜め読みしてみて方向性を検討してみるのはどうですか?。

  ・コンピュータプログラミングの概念・技法・モデル,ピーター・ヴァン・ロイ、セイフ・ヘリディ,翔泳社,2007年.

投稿日時 - 2015-09-23 10:32:26

お礼

回答してくださりありがとうございます。
専門学校について少し認識に差がありました。
ご提示してくださった本を、探して読んでみようと思います。

投稿日時 - 2015-09-23 11:06:17

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

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

回答(5)

ANo.4

人工知能やプログラミングを通じて何をやりたいのかはよくわかりませんが
人工知能というのはおそらく最もハードルが高いプログラミング技術が要求される分野です

物理は不要だと思います、数学も極端なことを言えば不要です
プログラムした結果が妥当であるか推論する能力が必要です
プログラムとは結局のところ入力を入れたら出力が帰ってくるというものでしかないです。
それは確かに数学で言うところの関数y=f(x)に似ていますが、ただそれだけです。
関数fとはx→yという入力数字から出力数字への変換操作であるという認識があれば十分です。
3Dプログラミングをしたいとなると、三角関数や行列と言った数学が必要ですが、そこまで難しいものではないです。
高度なプログラミングには、グラフ理論や高階関数(数学で言うところの汎関数)などの概念が必要ですが、高校までにそんな概念は出てきませんしね。
(まあ微分演算は一種の汎関数ですが、
汎関数とは関数に作用して、関数を生み出すような操作を指します。
y=2x^2+3x +1 の微分は4x+3ですね
つまり微分という操作は2x^2+3x+1→4x+3という関数から関数への変換操作を意味します
(関数は、数字から数字への変換、汎関数は関数から関数への変換、ただそれだけです)

プログラミングに何を求めるかによって適切なプログラミング言語が変化します。
人工知能を本気でやりたいのなら、LISP言語を勉強しましょう。
いずれにせよプログラミングを本気で突き詰めるなら、日本語を捨てて英語の文献に当たる必要がでてきます。良書も翻訳されていますが、劣悪な図書、劣悪な訳書も多い。
特にCやJavaなどは流行していますが、劣悪な図書が多すぎて、本当の意味でプログラミングを学ぶに私は適していないと思います。(もちろん良書もありますが、ダメな図書にひっかかる可能性が高い)
ガチでプログラミングやるつもりは無いのならruby言語をおすすめします。
言語開発者が日本人であり、コミュニティもそれなりに大きいので、いろいろ助かります。

プログラミング言語には多様な概念が出てきますが、
突き詰めれば全てLISP言語の考え(S式、ラムダ計算)に含まれています。
ただLISPのみだとオブジェクト指向の概念に触りにくくなるのでC++もおすすめします。
LISPはオブジェクト指向もサポートしますが、関数型言語です。
C++は関数型の手法を採用しはじめましたがオブジェクト指向言語です。
もし言語を2つ勉強するならLISPとC++(と英語)です、それ以外はありえません。
いずれも、もっとも高難度な言語ですが、高難度であるからこそ図書のレベルは高いものが多いです。

なぜ有名どころのJavaやC#を避けるのか、それは言語仕様の完成度が低く、意味のない手続きに当惑させられるからです、Javaはオブジェクト指向言語ですが、おそらくJavaから入った人間はなぜオブジェクト指向が必要なのかを完全に理解することはできないです。
LISPとC++を突き詰めた人間はJavaが何故このような言語仕様になっているか推察できます。(推察できない言語仕様も多いですが・・・)
とにかく不要なものが多くあとから付け足したものも多いので言語としての純度が低いのです。それは混乱を招き、良いプログラミングから初心者を遠ざけてしまいます。
JavaやC#にはたくさんのライブラリがあるので、確かに最初から高水準のプログラミングができるのは確かですが、何か足が地につかない感覚に絶対になると思います。

最大の問題はその専門学校でLISPまたはC++(あるいはCでもいい)を教えてくれるかということです。
もちろん優れた教師ならば、Javaでオブジェクト指向を教えられるのかもしれませんが、あまり期待はできないところです。
もし専門学校で、LISPまたはHaskell、Scheme、Ocamlといった関数型言語を題材として展開される授業があるなら、それを必ず受けてください。おそらくレベルが高いはずです。
皮肉なことですが、単にプログラミングで仕事を探したいだけなら、Javaだけを勉強すればokです。それが面白いものになるかはわかりませんが

投稿日時 - 2015-09-23 01:37:16

お礼

回答してくださりありがとうございます。
詳しい説明で助かります。
ただ自分に何が必要なのかよくわからないんです。
こちらの回答を参考にさせていただき、友人にも相談してみます。

投稿日時 - 2015-09-23 11:17:57

ANo.3

>文系学部ですが、IT技術や人工知能の発達が目覚ましい現代に合わせて、その分野の知識をある程度身につけ、将来の可能性を広げたいです。

専門学校に行った程度で、将来の可能性が拡がるとも思えません。

ダブルスクールなんてぬるいことを言ってないで
現在の大学を優秀な成績で卒業してください。

>とりあえず高校の履修範囲までは勉強してから、専門的なことを学びたいと思っていますが、必要な基礎知識は何がありますか。

プログラムを組む分野の専門知識が必要となりますので、
それに応じた基礎知識が必要となります。
物理とは限らず化学かもしれませんし、
高度な数学かもしれませんし、あるいは経理なのかもしれません。

投稿日時 - 2015-09-23 01:31:28

お礼

回答してくださりありがとうございます。
そうですね、ご指摘の通り、大学が優先ですね。
基礎知識というのは分野によって変わってくるということでしょうか。
やはりなるべく広い知識を持っていた方が有利なのでしょうか。

投稿日時 - 2015-09-23 11:21:54

ANo.2

文系学部ですが、IT技術や人工知能の発達が目覚ましい現代に合わせて、その分野の知識をある程度身につけ、将来の可能性を広げたいです。

★回答

計量経済学や、数理経済学 やってりゃ 数学も問題ないんじゃないのかね
それで統計数学は十分だろう 使う応用数学は類似 文系もかわらんと思えるけど
むしろ難しいのもあるな 工学のほうが楽もあるかも

文学 法律は使えんけど


プログラミングは文系 理系関係ない 言語コーティングだ
なれと作業 デバック

投稿日時 - 2015-09-23 00:15:19

お礼

回答してくださりありがとうございます。
経済学の数学で、充分なんですね。

投稿日時 - 2015-09-23 11:24:24

人工知能学ぶ上でもっとも基礎になるのは確率論です。

投稿日時 - 2015-09-22 23:41:46

お礼

回答してくださりありがとうございます。
確率論ですか。
知りませんでした。

投稿日時 - 2015-09-23 11:25:21

あなたにオススメの質問