アプリ版:「スタンプのみでお礼する」機能のリリースについて

わたしはもう40代で、自分が学生のときは、C言語を学習しました。

今の大学1年くらいは、どのプログラミング言語を学習するのでしょうか。
プログラミング言語も、新しいものが作られていると聞きます。
最近の主流について教えていただければと思います。

ちょっと勉強してみようかなぁと思っています。
わたしが使っているのは、Windowsです。10?

よろしくお願いします。

A 回答 (15件中1~10件)

なんか放置状態ですが


python推しの理由。

①初学者に優しい。

Hello World は

print("こんちは")

の1行。これで立派なプログラムです。

②インタプリタ―で学習可能。

付属のインタープリターや ipython を使うと
プログラムを行単位で実行を進めてゆくことが可能。
昔の BASIC のコマンドラインのノリですね。

言語の動きを、プログラムを行単位で実行させながら
学んでゆくことができるので、やっぱり初学者にやさしい。

③構造化も OOP も関数型プログラミングも必要に応じてできる。

学習深度に従って、プログラミングの手法を増やして
ゆくことができる。

④日本語情報が豊富。

書籍は洪水のように出版されてます。公式サイトのドキュメントも
日本語だらけ。

⑤科学技術計算に強い。

numpy, pandas, sympy, ・・・etc など、
理工系御用達の科学技術計算パッケージが豊富。
ipythonなどでお気軽に使えるので、プログラミング
しない人でも使ってみる価値あり。

欠点
①パッケージ管理は難解。プログラムの配布はややこしいです。
②デスクトップ GUI プログラミングはできるけど、.NETには遠く及ばない。
③OOPやモジュールに結構癖がある。
    • good
    • 0

プログラミング言語の需要から考えるといいかと思います。


そうするとPythonが1番かな。と思います。
https://careerhub.jp/programming-demand/
    • good
    • 0

③C++



この世にC++が好きな人はいない。マジで。クソだから。
「俺はC++が大好きだ!」って言う人はいる。でも良く話を聞いてご覧?彼/彼女が好きなのは実はC++じゃない。彼/彼女が大好きなのはSTL(Standard Template Library)なのだ。クソな言語C++の標準搭載のライブラリの一つ、STL(テンプレート、等と呼ばれたりもする)に対しては熱心な愛好家が多い。
これはホント強力。驚いた。以前、教えて!gooの質問に対して、洒落でC++のSTL「だけを」ニワカ勉強して、「だけを使って」回答書いた事があったんだけど、C嫌いの僕でもラクラク書けちゃうの。っつーか、Cで書くよりラクなのだ。マジビックリした。だからテンプレート愛好家が多いのは頷ける。っつーかC++に価値があるとしたら、間違いなくSTLがそれを担ってるだろう。オブジェクト指向?そっちはどーでも良いです(笑)。
つまり、初心者相手に話をすると、「Cの部分を学びたい?それともSTLを学びたい?」と言う二択問題になるし、二択問題になるだけで、もうそれは初心者向けじゃないと言う事。初心者向けに一番いいのは「強制的に一択になる」事なんだから(そして最悪な事に、C++による「オブジェクト指向」入門は良くあるが、C++による「テンプレート入門」はまず存在しない)。
そして、「Cより遥かに書きやすい」STLなんだけど、同時にある種の人たちは絶対こう思う。「あれ、やっぱLispの方が書きやすくない?」
そう、ある種の人たちにはC++のテンプレートは紛れもない「劣化版Lisp的機能ライブラリ」なのだ。言い換えると、テンプレートをラクラク使いたかったらまずはLispを学んだ方が良い、って言う結果になっちゃう。
古典的なCライクで勉強した人にはテンプレートは何だか分からん機能の山でしょう。Javaもラムダ式導入した際にユーザーが混乱したみたいだけど、C++のテンプレートも似たような機能がてんこ盛りです。「無名関数?なにそれ美味しいの?」ってなる。ローカル関数もねぇような言語で勉強してきたヤツが無名関数で混乱するのは当たり前。そして無名関数難民はQiitaに殺到する。
反面、Lisp学んだヤツはC++のテンプレート程度で混乱しない。ラムダ式はいつでもそこにあるし。常識だし。そしてMapしまくりReduceしまくるのだ(名前は違うけど)。楽しい!
まぁ、悪いこと言わないんで、C++のテンプレートを使うなら、先にLispを学ぶべきでしょうね。C++の為にLispを学ぶ、ってのはちょっとおかしな気がしますが、この辺はC#の例えばLINQ(Language INtegrated Query、だっけ?)なんかでもそういう事がしばしばあったりします。まぁC#は知らねぇけどよ。ただし、遅延評価、で混乱したくなかったらLispちょっと齧っとけ、ってのは間違いないでしょう。
大事な事なんでもう一回言います。意外に思うかもしれませんが、C++/Java/C#の「尖った新機能」を理解するにはLispを学んでおいた方が良いのは事実なのです。そしてLispを学んでしまったら、もう初心者たぁ言えないのです。
    • good
    • 0

うん、面白そうなんで、ちょっとtknakamuriさんに乗ってみるかな。



ちなみに、本当に「ハードウェアの動作を理解したい」のなら、昔のBASICみたいなバッチ式プログラミングに始まって、アセンブリに進むってのは悪くないんじゃないか、って最近考えるようになりました。本当に「ハードウェアの動作を理解したい」が目的なら、ね。
いずれにせよ、BASICもアセンブリもバッチ式言語って意味だと「形式」は共通してるんですよ。後者は確かに敷居が高い、けど当時のBASICと形式自体は似てるんで、思い切ってその境界線を渡ろうとした人は渡れたわけなんです。
80年代当時の(割に富裕層の)クソガキ共は(笑)

1. とにかくゲームがやりたいんでBASICで取り敢えずはゲームを書いてみた。
2. 作ったはいいけど遅いんで絶望する。
3. しょーがないのでアセンブリをやってみる。

と言う過程を辿ってたわけですよ。こういうクソガキ共が後に、「ゲームを作ろうとしてた事」を黒歴史として封じ込め、アセンブリの知識を活かしてC言語をすんなりと学び、「ワタシは昔からコンピュータサイエンスでした」みたいな顔をしてるわけです。チクショウめ(謎
ただ、こういう学習過程って、構造化プログラミング言語以降の言語だと難しいんですよね。BASIC〜アセンブリのライン以上の隔たりが実はあるんじゃないか、と。まあ当然ですよ。構造化プログラミング言語以降、ってスパゲティになる、バッチ式から遠いトコロへ行く為にデザインしてるわけですから。
と言うわけで、何らかの(BASICみたいな)原始的なバッチ式言語を学んで、その後、x86でもいいし、Z80のエミュとか6502のエミュとか68000のエミュとか、何でもいいんで、そういうの使ってアセンブリを学ぶのは「ハードウェアの動作を理解したい」のならいいかもしれません。

ちなみにちなみに。もっと本当の事言うと、「アセンブリを学んだからと言って機械語を理解した」とは限らない、ってのもあるんですけどね。素人的には「アセンブリ≒機械語」ってついつい考えちゃうんですが、実際はこの2つの間にもかなりの隔たりがあります。ワタシはそれをある年季の入ったプログラマな人との交流で分かりました。「アセンブリを理解してるから、と言ってハードウェアの動作を理解してるたぁ限らないんだ」と言う事を。
まあ、ハードウェアの動作を理解する、って事は「設計を理解する」と実は同義なんですが。一応機械語は数値の羅列で良く分からないもの、って一般には思われていますが、やっぱりそれなりに意味がある。と言うか、ハードウェアの設計時に回路的に無駄を省きたい。回路に無駄がある、って事は動作が遅くなるわけで。それを避けたい、ってのはエンジニアとしては当然なんですよね。結果、表れる機械語にも表現としての限界がある。
もちろん、(競合相手による)コピーを避けさせる為、敢えて複雑にして、って事はあり得るんですが、それよりもやっぱパフォーマンスが大事なんですよ。だからなるたけ回路を単純にして、数値の組み合わせでうまい具合に色々な事柄を効率良く計算出来るように苦心して設計するわけですよね。代表的な2つが、当然「命令」と、あとは「アドレッシング・モード」って言われる部分なんですが。
ただ、その辺の「工夫」ってのはアセンブリだけ学んでも分からんモンなんですよね。結果、やっぱそれ以下の部分ってのは隠蔽されちゃって「良く分からん」と言う事になっちゃう。実は当時、CPU(6502)のエミュレータを書こうとしてて、こっちの立場から言うと、常識的に考えて、「回路の組み合わせには必然性があって自然と命令とアドレッシング・モードの組み合わせには意味があるし、物理的に回路には制限が加わってる筈で機械語にそれは表れる筈だ」って読んでたんですが、そういう辺りは「アセンブリ学んでる人」でも予想出来なかったみたいです。っつーか、ソフトウェアやってる人だとつい「可能性は無限」的に思い込んじゃうわけですよ(結果、英語資料調べてみると「常識的な判断をしてた」僕が正しくて彼が間違ってたわけですが)。
っつーわけで、ある種、ソフトウェア側の立場(プログラミング言語含む)で「ハードウェアを理解する」なんつーのは限界あるんじゃないか、ってのが僕の本当の立場です。っつーかハードウェアホンマに学びたかったらプログラミングなんぞやらんで、電子工学やってハンダゴテ握ってるのが一番なんとちゃうんか。

と言う辺りで、tknakamuri氏の「初学者が勉強してはいけない言語」に僕もコメントを。

① JavaScript

僕も大反対。ただ、言語のできは悪くない。いや、悪くなってきてるのか(笑)?ECMAで改訂が入る度に酷くなってる、って話は風のうわさには聞きますが。

まずJavaScriptとは。一言で言うと「Cの皮を被ったLisp」。構文的にはCとかJavaに似せていますが、元々、機能的にはLisp系言語、Schemeの影響が強い言語です。だから正体はむしろ実は関数型言語です(でした、が正しいのか・笑?)

JavaScriptの製作者、ブレンダン・アイクって人はSchemeが大好きで、Mozillaに就職する際、「Schemeで色々と開発させてあげる」と誘われたそうです。実際はそれは大嘘で、腹立ち紛れにJavaScriptをSchemeライクとして開発した、とか言うウワサがあるけど、ホントかよ(笑)。

とまぁ、いずれにせよ、元々はLisp系言語の特徴を強く持った言語としてデザインされたわけですが。でも初心者には向かない。そもそも入出力が無い言語を初心者に使わせよう、とか無茶苦茶だろ、とか思います(JavaScriptはブラウザ上で実行される前提なんで、「悪意があるコード」を直接実行させない為に、入出力が無い、と言う離れ業的な解決法を用いた)。
document.write、console.log、alertなんかはJavaScriptじゃない。っつーか、document.write、console.log、alertを見て「JavaScriptだ!」って勘違いしてる奴らを大量生産するのは何とかなんねぇのか。C言語の #include <stdio.h> も「オマジナイ」なんで酷いが、JavaScriptはもっと酷い。HTMLやらCSSやらオマジナイが多すぎる。CやJavaが可愛く見える。
JavaScriptを学ぶのは、自分でRhinoやらSpiderMonkeyやらGoogle V8のソースコードを入手出来てビルド出来るようになってから、で良いでしょう。ここでソースコードやらビルドやら、「処理系」の意味が分からんヤツは手を出しちゃいけない。そういう言語です。
JavaScriptは峰不二子みたいな女で、脱がして弄る分には素晴らしい世界を与えてくれるでしょうが、年齢によっては「まだ早い、危険」だ、と。そういう悪女みてぇな言語なのです。

②HTML, CSS

まあ、やっても良い。っつーか、プログラミング言語じゃねぇし。マークアップ言語だし。
ブログでもやれば自然と覚えられる部分も多いので、そこまで固くならんでも良い。言えることはリッチテキストエディタは切っておけ。それだけ。
好きにしろ。ただし、「プログラミング言語」として教えて!gooに投稿してくんな。カテゴリ違いだ。
    • good
    • 0

だんだん過激になってきましたね。



Lispか~、
初学者には無理でしょう。遊ぶのは楽しそうだけど
実用的なプログラムを作るにはハードルが高すぎ(^^;

TK-80 のエミュレータで Z-80 のマシン語演習
とかも捨てがたいと思います。昔の電気系企業の
配属前演習の定番のひとつ(^^;

では初学者が勉強してはいけない言語

① javascript

Webアプリ作るなら必須ですが、言語のできがよくないし
癖が強い。
ブラウザ上で動かすのには HTML DOM の知識も必要で、
最初のハードルが高い。

②HTML, CSS

Webアプリ作るなら必須ですが、これはプログラミングというより
デザインのためのもの。Webデザイナとか目指すなら
やってもよいが、プログラミングの修行にはならない。

③C++

C独特のわかりにくさの上にやたらに複雑なので
初学者向けではない。設計もかなり古い。

C++のやりすぎの反省からJavaが設計されたのは
有名な話。

やりこめば C++ も悪くいないんだけど、最初の言語に
するのはやめましょう。
    • good
    • 0

主流は「他人が書いたプログラムを利用する」でしょう。

Pythonでプログラミングやってるとか言っても、巨大なライブラリを利用するための最小限のコードしか書かない。中で何をどうやってるかなんて全然知らずに書いてる。プロセッサが速くなりメモリもどっさりあるから、答さえ出れば、計算の仕組みも効率もどうでもいい、ってことです。ああ情けない。
 CはアセンブラにALGOL風の構文を加えただけの低水準言語の極みで、出てきた頃は「プロセッサとメモリを自分で操ってる感」が多少はあったとしても、今やプロセッサのアーキテクチャがCの時代とはかなり違うんで、「自分で操ってる」つもりが実はハードウェアは違うことやってたりして、意味を失った気がする。
 さて、今更学ぶのなら、No.9の仰るLISPは価値ありだと思います。出てきたのはFORTRANと同時期ですが、今も現役。これぞ最初の「高級言語」だと言えるのは、計算の仕組みがハードウェアとは直接の関係を持たないから。いわば「計算って何だ?」の根源に迫ってるんで面白い。No.9さんは実用性がないと仰るけれど、PIXER社の初期のCGレンダリングマシンはLISPで動いてましたし、数式処理システムReduceもLISPです。LISPは「専用の言語を作っちゃえ」ということをやるのに向いてるからです。実際、LISPで何をするかというと、特定の計算のためのプログラムを書くんじゃなしに、ある程度汎用性のある言語やライブラリを作ってる。てことは、最終的にやろうとしているのは「巨大なライブラリを利用するための最小限のコードしか書かない」で済ませよう、ってのと同じこと。ただし、中身を作る側に回るわけですがね。
    • good
    • 0

ホントにホントに本音を言うと、



「まずはLispをやれ」

って言ってみたい(笑)。言わねぇけどさ(笑)。
Cよりも古い言語として今でも生き残ってるシーラカンスみたいな言語ですが、確かにある種「悟りを開ける」。理論だらけで理論しかない。一貫した構文。ただし、構文は無いに等しい(笑)。
唯一の欠点は配列の扱いがクソメンド臭い事。ただし、LISt Processingなんで、リストさえ扱えればあんま文句はないのだ。
ただ、「理論的で悦に入る」分には問題ないけど、やっぱ皆さん仰る通り、実用性は皆無なんで、だから「やれ」とは言えません(笑)。好きだけどしゃーない。

もっと言っちゃうと、こいつは「使う言語」じゃない。他の言語で「作る為の言語」です。言い換えると、CとかJavaとか、まぁ何でもいいけど、ある言語のエキスパートが「趣味で実装するための」言語がLisp。でもそれはまた誰も使わねぇんだ(笑)。それがLispの運命。

いずれにせよ、「計算」に付いて悟ってみたい場合は、Lispにどんなカタチであれ、触れてみるのは一興でしょう。

余談ですが、色んな人が言う、「C言語を学べばハードウェアの仕組みが分かる」ってのは大嘘です。色んな人にインタビューしてみたんですが、「C言語を学んだからハードウェアの動作が分かった!」なんて人はいない。逆です。アセンブリや機械語の経験がある人がCを難なく使える。原因と結果が逆なのです。
従って、良く言われてる事は大嘘だと断定します。Cにそんな教育効果はありません。
応用数学的な立ち位置で、コンパイラの実装を通じてハードウェアの動作が分かる、って事はあるでしょう。ただし、それはC言語そのものとは全く関係がないです。単に「コンパイラもCで書かれる」ケースが多いだけで。しかもコンパイルに時間がかかるのと、そのコンパイラが速いバイナリを生成するのも無関係。インタプリタでインタプリタ書くのとは事情が違って、つまり、Cで書いたから速いネイティヴコードを吐き出すわけでもない。
この辺グチャグチャなのに、「みんなが言ってるからそうなんだろうな」と都市伝説的に広まってるのが「C言語による教育効果」です。
もう一度言いますが、そんな教育効果はC言語には「ありません」。
    • good
    • 0

私は 1984年から20年近く c を使ってたけど


今は使わないんですよね。
1980年代1990年代はC一色だった時代で
売ってるコンパイラは C ばっかりだったし
UNIX/LINUX 触るためには C を学ぶしかありませんでした。

当時の入門書も C ばっかり。このころ学生や若い技術者だった
方は未だに 初学者に C を推奨される方が多いです。

でも時代は過ぎて、今は組み込み系(マイコン)以外で
C を使うことはとても少なくなったし、C++も
複雑すぎて人気を落としてます。アルゴリズム学ぶんだったら
今はjavaの方が良いですよね。

Cやって得したのは Cの構文をベースにした言語が
多いことかな。java の python も C# も
Cの構文をベースにしています。

でも、配列の扱い方は独特過ぎるし、未だにヘッダファイルを
使うのは原始的で煩わしいし、リストもハッシュも文字列も
ない言語が初学者向けというのは疑問です。
    • good
    • 0
    • good
    • 0

年金生活している,元工学部教員です。

情報系・電気系ではありません。いまや工学部でもCとかfortranとか教えていますが,その工学部でさえ自分でプログラムを作る卒論は成功しません。ほとんどの学生が,まるで作れないのです。まるでダメ。だから教員が作ったコードを渡すか,高価な汎用コードを共同購入して使わせるのがせいぜいです。えっと旧帝大工学部でです。プログラミング言語ではありませんが1年生で触らせるhtmlもダメ,Javaもダメ,TeXはもっとダメ。
 僕らの年代だとfortranでしたから,なんでもかんでもfortranです。Cはすぐ挫折します。引数の受け渡しがfortranと異なるし,なんだか拒否反応がいつも置きます。K&Rの教科書もprintfくらいで嫌になります。アハハ。だから今でもWinにCygwin入れてfortran。あるいはVisual Studioを入れてBASICです。これはどちらも無料なので。あ,Cygwin ではCも使えます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!