質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

4427閲覧

英語ドキュメントを読むためのベストな学習法

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

2グッド

1クリップ

投稿2017/03/10 16:52

編集2017/03/11 03:31

###教えて頂きたいこと
プログラムの学習をしていると英語情報しかない場合があり読解に苦労しています。
少し英語に慣れた方が今後の学習上プラスになると考え、プログラミングに特化した英語学習方法を模索しています。
皆さんお勧めの学習方法はどういったものでしょうか?

###具体的な利用シーン

  • 英語マニュアルを読む
  • 英語のgithubやQ&Aサイト等を読む。
  • 英語のコーディング練習サイトで問題を解く 等

###現在利用している教材
現在自分が使っている教材は、英文マニュアルと翻訳された日本語マニュアルです。
簡単な説明だと、文章の量がフレーズレベルなので、見比べてフレーズの勉強をしています)

例)
英文)Test your extraction code in an interactive environment.
翻訳)インタラクティブな環境で抽出コードをテストする.

pebble8888👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

私はkatoyさんの言っていることに概ね賛成です。

###対訳は役立たず

まず、対訳を見比べる手法ですが、技術文章の翻訳で優れているものは希です(もちろん、良訳といわれるものもありますが、少数です)。中にはGoogle翻訳の方がマシというレベルもあります。なぜなら、技術がわかる、かつ、翻訳ができるという能力の人は少ないからです。

例えば、有名なStricture and Interpretation of Computer Programs(通称SICP ハル・エイブルソン、ジェリー・サスマン、ジュリー・サスマン共著)の翻訳を見てみましょう。ネットですぐに入手できる翻訳は三つあります。

  1. 計算機プログラムの構造と解釈 第二版 和田英一訳
  2. PDF版SICP日本語翻訳 minghai訳
  3. SICP - Long Gamma 有志による訳

SICPの1.1.2 Naming and the Environmentの冒頭で変数と名前の関係を述べています。

A critical aspect of a programming language is the means it provides for using names to refer to computational objects. We say that the name identifies a variable whose value is the object.

それぞれの訳とGoogle先生の訳(Google翻訳)を見てみましょう。

和田訳

プログラム言語の重要な点は, 名前を使って計算オブジェクトを指す手段を用意することである. オブジェクトを (value)とする 変数(variable)を識別するものが 名前である.

minghai訳(PDFですので、リンクはありません)

プログラミング言語の重要な特徴は演算対象を参照するための名前を利用 するためにそれが提供する手段です。名前は_value_() としてオブジェクトを持 つ__variable__(変数) を識別します。

有志訳

プログラミング言語の重要な特徴は、演算オブジェクトを参照するための名前が使えるということである。名前こそが、オブジェクトを値として持つ変数を特定するのである。

Google翻訳

プログラミング言語の重要な側面は、計算オブジェクトを参照するために名前を使用するための手段です。この名前は、値がオブジェクトである変数を示していると言います。

和田訳は、古いこともあり、少々お堅いです。技術的には理解しているが故に、やや直訳風になってしまっています。逆にminghai訳は、技術的に理解しているのか疑わしいほど、何を言っているのかわからないという感じです。有志訳は内容の意味だけではなく、日本語として意訳しています。Google先生は少々言い回しが変ですが、意味は通じる感じです。

このように一つのものに対する翻訳でも訳者によってかなり異なります。この違いは、訳者が知っている事の差です。

  • 訳者が翻訳の仕方をわかっていないと、直訳になり、日本語として違和感が出る。
  • 訳者が技術の仕組みをわかっていないと、日本語は正しいのに、とらえ方の間違いで部分的な訳が間違ってしまい、言っていることがおかしくなる。

SICPは有名なだけあって翻訳は複数ありますが、ものによっては翻訳は一つだけも珍しくありません。本当に酷いものは酷く、英語の原書を読んだ方がマシと言われるものがたくさんあります。

なお、機械翻訳はかなり酷かったのですが、ここ最近は技術の向上で大分マシになってきました。ただ、すごい誤訳をしている場合もたまにありますので、鵜呑みにするのは危険です。

###技術英語はフレーズよりターム

技術英語ではそれほど難しい言い回しは余りされません。それこそ仕様書のような文章では、かなり簡素な英語で書かれていますので、SHOULDとMUSTとNOTの違いさえ気をつければ、それなりに読めるはずです。それよりも重要なのはターム、つまり用語です。たとえば"object"とあった場合、普通は「物体」とか「対象」とか「目標」とかに訳されます。しかし、プログラミング言語の言い回しで"object"と言った場合は「オブジェクト」と訳されます。なぜなら、このときの"object"はテクニカルターム(技術用語)であり、もともと日本語に存在しない意味で使われているからです。

先ほどのSICPでは"computational objects"という表現が出てきました。直訳すると「計算的な対象」でしょうが、これでは全く意味がわかりません。「プログラムの計算で用いられる(技術用語としての)『オブジェクト』」と理解すると、なんとなくわかると思います。また、ここでのオブジェクトは次の文の"object"と同じであり、その関連性がさらにわかることでしょう。

※ では、オブジェクトとは何かと言われると、一言で説明するのは難しいです。それは確かに、コンピュータの中の「物体」であり、計算の「対象」であり、プログラミングする「目標」でもあります。ニュアンス的にそういった英語の元々の意味から技術用語になったと言うこともあり、英語圏の人には違和感がないのかも知れません。

このように、技術用語を知っているか知っていないかで全く別の解釈をしてしまうことがあります。しかし、技術用語を知るにはその技術自体を知らないと難しいです。オブジェクトという技術用語も、プログラミングを理解して初めて理解できる物になるからです。

###近道はない

じゃあどうすればとなると、まずは最低限の基礎知識を身につけることでしょう。最低でも、まともなプログラミング言語を一通りやっている、または、大学の情報系学部レベルの知識がある、とか、そういった物がないと意味不明で終わると思います。逆にそういった知識があれば、より知識を深めるためにも、知っている事の関連書籍を読むことはかなり助けになるでしょう。

対訳を見ることは、最初に言ったとおり、翻訳の善し悪しがかなり出るので良訳に巡り会わないときついです。ましてや、良訳の本が初心者向けとは限らないため、そもそも訳された本を読めるレベルにならないといけません。結局は、基礎知識に立ち戻ってしまいます。

普通に勉強してからは嫌だ、同時に進めたいと言うのであれば、「英語の本しか読まない」しかないと思います。英語が得意なら、さらさらいけると思います。私もHaskellを初めて学ぶのにLearn You a Haskell for Great Goodというのを英語だけで読み進めていった事があります。ただ、ジョークのような言い回しの部分がわからなかったので、あとで日本語訳(これ自体は良訳だと思っていますが、残念ながら、この本はCやPythonなどの普通のプログラミング言語を知っている人でないとちょっと厳しいです)を買って読み直しましたが…。

###更なる先

技術英語にはもう一つレベルがあります。上の話は仕様書とか入門書とか書物レベルです。次に必要なのは会話レベルです。メーリングリストやGithubのissuesなどを読み解かないといけません。ネイティブの人は砕けた英語を使いますし、ネイティブじゃない人(私を含む)は壊れた英語を使います。そこに、なんとか英語で投稿して、会話する必要があります。

ただ、この世界は「通じれば良い」という感じなので、なんちゃってでもそれなりに大丈夫と言えば大丈夫のような気がします。(私は正しい英語になることを諦めました)

投稿2017/03/11 05:24

raccy

総合スコア21733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/03/11 08:58

とても詳細に解説頂きありがとうございました。 実際の対訳例を複数ご紹介頂き、それぞれに大きなバラつきがある事が理解できました。 「技術英語はフレーズよりターム」、「近道はない」というご説明もとても参考になりました。 「まずは最低限の基礎知識を身につけること」とのご指摘の通り、現段階では日本語でプログラミングの学習を進める事を重視し、テクニカルタームを少しづつ覚えていきたいと思います。 (対訳の比較がとても参考になりました。ありがとうございました。)
guest

0

プログラミング文章を、自分で理解できる英語力を身に着けたい。

自分が使えるプログラム言語入門の書籍・Web ページを辞書を引かずに、大量に読む。
(少しぐらいわからない単語や構文があっても無視して、それなりの速度で読み進める)

どうしてもキーになる単語、文書でわからないものがあった場合は、辞書や翻訳機能をつかって意味を調べる。

このようにすると、よくでてくる単語や言い回しがわかってくるとおもいます。
自分が使えるプログラム言語のことなので、英語も意味はだいたい想像できるはず。
それらを英語でどんな風に表現するかを頭に大量に入れていくのが、この方法の目的です。

投稿2017/03/10 23:26

編集2017/03/12 02:29
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/03/11 03:00

コメント頂き有難うございます。 「入門用の英語の書籍」を大量に読むというのは確かに効果がありそうですね。 私はまだプログラムレベルが低いのですが、技術的な土台がしっかりした方なら、 こちらの方法で高速でインプットできそうですね。
guest

0

英語マニュアルを読む
英語のgithubやQ&Aサイト等を読む。
英語のコーディング練習サイトで問題を解く 等

辞書を引きながらやってみたらいいと思います。そのうち辞書を引く回数も減るでしょう。

投稿2017/03/10 17:11

編集2017/03/11 03:50
Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2017/03/10 17:21 編集

あれ? 何か間違ったこと言いましたか? RFC 読めば RFC 読めるようになりますよ。他に読みたい技術文書があればそれをどうぞ。実際ジャンルもたくさんありますし、人工知能のフレーズ覚えてもスマホアプリ作れるようにはならないんですよね。
退会済みユーザー

退会済みユーザー

2017/03/10 21:06

コメント頂き有難うございます。 初心者なので専門用語を知らないのですが、RFCとはRequest for Commentsの事でしょうか? こちらのキーワードで調べたところ、日英を対訳したサイトを見つけまして、大変参考になりましたのでお礼申し上げます。 また、MSDNについては、こちらの質問をした後に気付いたのですが、 teratail内に 「ITにおける英語の必要性について https://teratail.com/questions/43510」 という質問を見つけました。 そちらによると、MSDNには英日の翻訳が機械翻訳で正確ではない場合があるとのことでしたが、 良質な英日翻訳を簡単に抽出するような方法はありますでしょうか?
Zuishin

2017/03/11 00:36 編集

自分で翻訳すればいいじゃないですか。 文学作品ではないので分かりにくい持って回った表現や慣用句はほとんどありません。辞書があれば事足ります。 意味がわからないと翻訳できないので、その技術に対する自分の理解の足りていないところがわかります。 「インタラクティブな環境で抽出コードをテストする」の意味が分かりますか? 日本語として、訳として間違ってはいません。しかし良質な翻訳かと言われると首をひねります。これを意味も分からず文脈も無視して丸暗記することには無意味さを感じます。 私なら「データを抽出するコードをシェルで対話しながら試して下さい」と訳します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問