基本的なプログラミングを教えるための言語


8

私は中学生にプログラミングを教えることに興味があります。次の基準を備えたプログラミング言語が欲しいのですが。

  1. シンプル -コードを多用せずに高度なプログラミングをサポートするために必要な最低限の数にまで削減。そのため、この言語では、ポインターには興味がなく、オブジェクト指向にうんざりしています(関数は優れていますが)。
  2. パワフル -グラフィックス、ネットワーキング、分散処理など、21世紀の要素をプログラミングできるようになりたいです。
  3. デバッグ可能 -人間が読めるデバッガを備えたエレガントな統合開発環境が必要です(つまり、スタックトレース付きの奇妙なエラーメッセージではなく、平均的な中学生がコードの何が悪いのかを判断するために使用できる明確な説明) 。

標準プログラミング言語(C、C ++、C#、Java)は、最初の基準を満たしていません。Scratchなどの基本的なプログラミング言語は、2番目(場合によっては3番目)の基準を満たしていません。スクリプト言語(perl、python、php)は最後の基準を満たしていません。

誰かがそのような獣を知っているかどうか知りたいのですが、座る前に自分で作ります。


2
人間が読める種類のデバッグ出力の例はありますか?あなたは明示的にPythonを除外しましたが、それはシンプルで強力であり、IDE /デバッガー統合が含まれています。wiki.python.org / moin / IntegratedDevelopmentEnvironments そのスタックトレースは多くのレベルより優れていますが、「終了括弧を逃しました42行目...後者の例は知りません。
andybuckley 14年

主に、初心者のプログラマーが理解できるように、エラーメッセージは明確で十分に説明的である必要があります。たとえば、「AttributeError: 'module' object has no attribute 'BufferedIOBase'」is not descriptive-which object was the problem、そして、それは望ましい属性をどこに必要としましたか?
Ari Trachtenberg、2014年

1
これはa)ここではトピックであり、b)客観的な答えがあるかどうかはわかりませんが、コンピューターサイエンスチャットでこれについて説明しているときに、最初に教える言語を選択するための有用な基準について説明しているこの質問を確認することをお勧めします。そうは言っても、Scalaを調べてみてください。それを深く学びたいなら、それは簡単な言語ではありませんが、「第1レベル」は非常に単純であり、スケーリングして基準を満たしていると思います。
ラファエル

1
Pythonが「デバッグ不可能」であるかどうかはわかりません。コマンドラインインタープリターを使用してください。そして、「デバッグ」がプログラム開発の悪い方法であるというのは私だけではありません。はい、私はたまにデバッガについても手を差し伸べていますが、ほとんどの時間を費やすことなく、自分の方がうまくいくことがわかりました。
フォンブランド2014年

回答:


4

Javasciptをお勧めします。

  • これを読んでいるほとんどすべての人が、デフォルトでブラウザの開発環境にアクセスできます。
  • 新しいプログラマーにとっては寛大です。
  • 最新の機能セットをサポートしています。
  • 品質にかかわらず、インターネットにはサンプルコードの膨大なリポジトリがあります。
  • これは実際に適用可能な言語です。

カーンアカデミーには、私が必要とするほとんどのことを行うJavascript用の素晴らしいラッパーがあるようです。
Ari Trachtenberg、2014


+1、オブジェクトの継承ではなく実際のクラスとオプションの静的型が必要な場合は、MicrosoftのTypescriptがVisual Studio Expressで利用できることを追加します(デバッガーのすべての機能を備えています)(Typescriptだとは思いません) Javascriptとは異なり、独自の答えを保証します。)
Wandering Logic

8

おそらく、ラケット(以前はSchemeと呼ばれていたLispの派生物)を調べる必要があります。それは私の大学の最初の1年のCS学生に教えられた言語です。関数型プログラミング言語であるため、C / C ++に比べて構文と概念が非常にシンプルです。いくつかの基本的な描画やネットワーク関連の処理を実行できるライブラリがいくつかあり、Dr。ラケットはいくつかのデバッグ機能として...ステッパー(つまり、「次へ」ボタンをクリックすると、一度に1つの置換が表示され、実行されます。調べる価値があると思います:http : //racket-lang.org/。これには、指導モジュール(初級、中級、上級、完全な学生レベル)や、非常に優れたドキュメントや例など、他にも好きな機能がいくつかあります。本:How To Design Program(http://www.htdp。)は、この言語の優れた教育用リファレンスであり、上記のライブラリのいくつかを使用したいくつかの素晴らしい例があります。


5
同意しません。関数型プログラミングは、大学生であっても、命令型よりも頭を抱え込むのがはるかに困難です。中学生に再帰的なデータ構造を教えたくありません(ラケットと会社にとっては絶対に必要です)。
Patrick Collins

2
@PatrickCollins:学生が(年齢を問わず)プログラミング言語より早く関数型プログラミングを学んだという研究を覚えているようです。以前は、おそらく直感的ではない逐次型命令パラダイムに頭が揃えられていなかった(つまり、絶対的な初心者だった)場合です。 )。私は間違いなく大学について確認できます。私たちは最初に関数プログラミングを教え、プログラミングの経験がない人は他の人よりも問題が少ないことを確認します。
ラファエル

5
@Raphael、私は有能な命令型/ OOPプログラマーである人をかなり知っています(そのように訓練されていなかった人の間でも)、関数型プログラミングの方法を知っているごくわずかです。はい、数学の思考に没頭している場合、再帰は自然です。さもなければ、それは本当に自然に来る「繰り返される...完了するまで」を行う非常に奇妙な方法です。さて、フェルマートの頃になるまで誘導は実際には理解されませんでした。人々はそれより数十万年前までアルゴリズムを定義/適用してきました。
フォンブランド2014年

1
ラケットの人々は、中学校の子どもたちのための教材を開発しているし、成功を収めてそれを使用している:bootstrapworld.org
デイブ・クラーク

3

Pythonがうまくいくと思うなら、私は学生のためのJython Environment(JES)を調べます。監視する変数を選択できる「ウォッチャー」を含む、いくつかの気の利いたデバッグツールがあります。ステップを制御することも、すばやく実行することもできます。私はこのIDEを中学生の学習者と一緒に夏のプログラムでうまく使用しましたが、大学レベルの入門コースでもこれを使用しています。メディア計算ライブラリも楽しいです。私のコースの学生は、写真や音声の編集を楽しんでいます。アニメーションの作成もサポートされています。

ネットワーキングや分散処理には使用していません。高次の手順を含むデータベースや関数型プログラミングなどのトピックについて、GuzdialとEricsonによるMedia Computationの教科書に例があります。JESで通常のPythonの処理を行うことができますが、メディアの処理が追加でサポートされています。


2

おそらくVisual Basicを使用する必要があります。シンプルで、いくつかのシンプルなGUIゲームと一緒に連絡先リストアプリケーションを簡単に作成できます。デバッグすることもできます。学校が生地を喜んで提供する場合は、dreamsparkサブスクリプションを取得できます。学生の注目を集めると思います。


2

Pythonは、「ほとんどの疑似コード」言語であり、「実際の」プログラミング(Fedora Linuxの管理ツールのほとんどはPythonで記述されています)を実行するのに十分強力であり、グラフィック/グラフィカルインターフェイスの拡張機能を簡単に使用できます。数値の問題(人々はこのためにNumPyを使用します)、多くのWebプログラミングがその中で行われ、いくつかのプログラムはそれを拡張言語として使用します。大規模なライブラリがあり、多くのより大きなシステムがそのために/のために書かれています。したがって、それはおもちゃの言語ではなく、後で学ぶのに役立ちます。

それを見てのホームページは、あなたが気に可能性があるほぼすべてのプラットフォームで利用可能な成熟した実装があります。それは無料です(ただゼロのコストではありません)。利用可能な広範なドキュメントがあり、「Pythonチュートリアル」をGoogle検索すると、何百万ものヒットがあります。実践的なWebチュートリアルはLearn Pythonです。Pythonを使用した入門プログラミングコースについては、DowneyのThink Pythonを検討してください


OPは、Pythonを「使いやすいデバッガ」の基準に対応していないと具体的に述べています。わかりやすいデバッガサポートを備えた一部のPython IDEを指すことができれば、この回答は改善されます。
ワンダリングロジック

1

MITが開発したスクラッチを除外します。これは、いくつかの基準をほぼ満たしているようです。とにかく、ここにいくつかの検討に値する2つの新しい言語があります。

  • グーグルで行く。高速コンパイル用に設計されています。ここに設計目標があります

  • Appleによるモバイル開発用のSwift。AppleのObjective Cに代わる、それほど複雑ではない設計になっています。

  • node.jsはより新しく、基本的にはJavascriptの機能をサーバー側に拡張し、ネットワーク機能を組み込むように設計されています。


1
おかげで...スクラッチには関数型プログラミングが欠けています。それは小学生の子供には良いかもしれませんが、年上の子供はすぐにそれを超えます(私の意見では)。
Ari Trachtenberg、2014年

スクラッチの専門家ではありません。ただし、クイックスキムでは、カスタムブロックの機能をサポートし、「ブロードキャスト」およびいくつかのマルチスレッドの概念を介したメッセージパッシングもサポートします。ピコボードインターフェイス
vzn '12

バークレーには、Snapと呼ばれる機能を備えたスクラッチの拡張機能があります。イベント処理も備えていますが、ネットワーキングがなく、デバッグも簡単ではありません。
Ari Trachtenberg

正しい。計算されたデバッガは存在せず、その項目で失敗します。しかし、実行ごとにcmd-by-cmd(それをサポートすることはそれほど難しくありません)を実行するだけで、基本的なデバッグと見なすことができます。私にとって、デバッグは実装上の側面です...つまり、どこか/将来のある
時点でマテリアライズ

0

ニュースピークを見たことがありますか?NewspeakはSmalltalkの最新バージョンです。つまり、オブジェクト指向ですが、Simula 67の意味ではなく、Alan Kayの意味です。

そうは言っても、私が中学校にプログラミングを教えているなら、デバッガーの要件を捨てて、Haskellのようなものを教えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.