.

2018年12月13日

仕事で使える英語表現(7):ping(連絡する)

 ども勉三です。「仕事で使える英語表現」の第7回目。今回は ping という単語についてです。

 この単語、もともとは潜水艦がソナーを発信する音からきている擬音語由来の動詞だと言われています。ネットワークで特定のサーバに接続可能かを試すコマンドにもなっているので、それでご存知の人もいるかもしれません。イメージ的にはまさに潜水艦からピン!とソナー音を発する感じで、誰かに連絡すると言いたい時に使います。

 実際に例文でみてみましょう。

Isn't Mary joining the meeting?

メリーはミーティングに参加しないのか?

I don't know. Maybe she has another call.

分からないけど、もしかしたら別の会議が入ったのかも。

Why don't you ping her?

ちょっと連絡して聞いてみてくれる

 いかがでしょうか? ping は訳すと「連絡する」という意味になるのですが、どちらかといえば返事がすぐに得られることを念頭に連絡するようなイメージです(例えばチャットやLINEのメッセージなど)。

 上の例文では、call という単語にも注目してみてください。callは文字通り電話ということで、conference call(電話会議)を指したりもしますが、実際にはざっくりと「別の用事」的な意味で使われることが多いと思っていいと思います。これもよく使う表現ですので覚えておきましょう

 もう1つ別の例文です。

Hi John, I want to ask you a favor. Please ping me when you are available.

ジョン、ちょっと用事を頼みたいんだけど、手が空いたら連絡くれないか?

 英語のチャットやメールだと、同僚相手には Hi 〜(名前) で挨拶することが多いですね。ここでは、都合がつくときに連絡をくれ、ということを言うのに ping が使われています。このようなやりとりはビジネスシーンではよくあるので覚えておきましょう。

スポンサーリンク

.

posted by 勉三 at 23:04 | Comment(0) | TrackBack(0) | 英語

2018年12月10日

最初に学ぶべきプログラミング言語とは?(2)

 前回からの続きで、プログラミングの初心者が最初に学び始めるのはどの言語がいいかという永遠のテーマについて勉三の考えを述べていきたいと思います。

そもそも言語って1つじゃなく、いくつも覚えることになる

 よく勘違いしてる人がいますが、プログラミング言語って到底1つじゃ足りないんですよね。環境や用途によってデファクトスタンダードの言語って違ってきますし、時代によっても変化する。勉三自身の遍歴を振り返ると、昔懐かしのN88 BASICから始まって、C,C++, Java, C#, VBA, R, Python, MATLAB などなど色々やってきましたよ。

 別にこれらは私が好きで選択してきたものばかりではありません。目的を実現するためには色々な言語を使わざるをえなかったのです。例えば、会社のPCだと余計なソフトがインストールできなかったりするので、(MSOfficeが入っていれば)何の追加ソフトも必要なくプログラミングができる VBA は非常に重宝しました。

 また、機械学習や人工知能の研究をしていると、論文で誰かが報告したばかりの最先端のアルゴリズムを使うわけですが、そんな時は論文著者がウェブ上で公開しているソースコードを使うしかなかったりします。それも書かれている言語はバラバラ。出来合いのソフトやライブラリーのようにすぐ使えることも少なく、大抵はコードにバグがあるので、自分で中身を解読して修正しなければいけません。

 そうでなくとも、プログラムの心臓部(ビジネスロジック)はポータビリティや高速化のためにC/C++などで実装し、ユーザインターフェイスはJavaやC#、Webサイト構築ではPHPやRubyのフレームワーク、それにJavaScriptなどを組み合わせて作ることは日常茶飯事でしょう。

 言語は1つを極めるのではなく、適材適所で使い分けざるをえないのです。

最初にCから入ると他の言語への以降がスムーズ

 勉三が前回「最初にCからやれ」と言ったのは、まさにこのためです。Cを最初にやっておくと、大抵の言語は怖くありません。まあ、オブジェクト指向やジェネリクス(テンプレート)指向といった部分に関しては、Cは弱いので、流石にCをやった後にC++かJavaあたりも勉強すべきだと思いますが、手続き型の世界で必要とされることは、ほぼCでカバーされてますからね。

「C++なんて使いこなせる人はいないから、使わないほうがいい?」

 で、またこういうと「C++の全機能なんて使いこなせる人はいないから、使うべきではない」とか主張しだすアホな人が必ずいます。

 同じような主張は、Word とか Excel とかソフトについても目にするんですが、そもそも全機能を使いこなす必要はないですよね。自分が必要な機能だけ使えていれば、立派にそのソフトを使っていることになるのです。

 特に、C++は、ある意味で世界観をユーザに押し付けがちな他のいくつかの言語と違って、「便利なものは色々用意したから好きなものだけ使ってね」という思想のもとで作られた言語です。実際、C++の生みの親であるビャーネ・ストラウストラップ氏もそういってます。興味ある方は「プログラミング言語C++」でも読んでみてください。この本はプログラミング言語の歴史を語る上では必読で結構面白いですよ。

 ですので、あくまで自分の必要なものだけを使うという姿勢で問題ないのです。何も色んな機能があるから、それを全部使いこなしてC++っぽく書かないといけない、といった言語ではありません。

とにかく迷ったら最初はC、その次にC++かJavaかC#か

 というわけで、勉三のおすすめは迷ったらC、でその次にC++/Java/C#などの非軽量なオブジェクト指向言語をやる。これで、後はどんな言語もほぼ怖いものなしになるでしょう。

 逆に、最初にとっつきやすい言語から入って、あくまで入門の時期だけならともかく、そればっかりになると辛いですよ。

 もちろん、何か明確にやりたいことが決まってる人は、その限りではありません。「俺はSNSチックなウェブサービスを作りたいんだー」って人に、いきなりCから勧めることは流石に勉三もしません。あくまで前提は、プログラミングの「勉強」がしたい人向けのおすすめです。

スポンサーリンク

.

posted by 勉三 at 23:58 | Comment(0) | TrackBack(0) | IT

2018年12月09日

最初に学ぶべきプログラミング言語とは?(1)

 ども勉三です。プログラミングの初心者が最初に学び始めるのはどの言語がいいか、というのはよく議論になり、だいたいそれぞれが自分の経験や好みに基づいて主張しだすので、収拾がついた試しはありません(笑)今回は勉三の持論を書かせて頂きます。

そもそも「どの言語をやればいいですか?」と聞く人は向いてない

 まず、そもそもなのですが、「プログラミングに興味があるのですが、どの言語をやるのがいいですか?」といった質問をする人は、プログラミングに向いていません。

 プログラミングに向いている人は、そんな質問をせず自分で適当な言語の本を買って勉強して、数日後には簡単な自作プログラムを作ってるような人です。質問している間に言語1つぐらいざっと習得できますからね。

 これが「私はこういうアプリを作りたいのですが、どの言語を勉強するのがいいですか?」という質問であれば構わないのです。目的があれば、そのためのOS、プラットフォームなどは絞られますし、そのOSやプラットフォームで開発をするために向いた言語というのも絞られますから、経験者も「この言語がいいんじゃない?」と言えるわけです。

 ですが、何の目的もなしにプログラミングが勉強したい、というのだけだと、答えが出るわけがありません。別にどのプログラミング言語でもいいし、極端にいえばその人が習得できようができまいがどちらでも変わりはありません。どうせ、そういう人はプログラミングを覚えたところで何かを作るということもないでしょうから。そういう人は単にプログラミングの「勉強」がしたいだけで、何かを作るためにプログラミングをしたいわけではないのです。

プログラミングの勉強がしたいならC言語が一番いい

 ここまでの議論を踏まえて勉三の持論を書きますが、プログラミングの「勉強」がしたいのであればC言語が一番いいと思います。

 まず、手続き型言語としてはその後の殆ど全ての言語に影響を与え、デファクトスタンダードの位置にあり、Cさえしっておけば他の言語にも応用がきくこと。また、どのOSでも無料で使える開発環境があるでしょうし、入門書の類も豊富です。

 たまに「C言語は難しいから初心者に向いていない」「もっと簡単に作れるものをすすめるべき」という人が言いますが、そもそもプログラミングの「勉強」がしたい人にとっては、簡単なことよりも、バランスよく勉強できることの方が大事でしょう。

 型やポインタ、メモリの概念を隠ぺいした言語であっても、あくまで隠蔽しているだけで、必ずそういった概念の理解はゆくゆくは必要になってきます。コンピュータでプログラミングをする以上、これらの概念は避けては通れないのです。であれば、プログラミングを勉強したいといってるのに、そういったことを教えないのは、数学を勉強したい人に難しいからといって三角関数や微分は教えないようなものでしょう。もちろん、内容を簡単にすれば理解できる確率は上がりますし、達成感はありますが、それは単に教えるべき内容を削っているだけに過ぎません。ゆとり教育みたいなものです。

 また、Cをやったことがなく C# やら Python やらから入ったとして、「Cではポインタという非常に難しいものがある」とか「Cではメモリ管理をきちんとやらないといけない。最近の言語はその辺気にしなくても書けるからバカでもできる」とか、そういう主張を目にすることは遅かれ早かれあると思います。

 その時、Cを知らないとそういった意見を信じてしまうしかなく、何か自分の知らない難しい概念があるぐらいにしか考えることができません。Cを勉強しない限り一生その影はついてきます。もし知っていれば「ポインタなんて難しくないでしょ。バカじゃない?」「メモリ管理は今やC++でさえスマートポインタが導入され、解放を極力自動化できるようにしている。それがベストプラクティスと認識されているのだから、GCに頼ることは何も悪いことではない」といった反論ができるようになります。勉三はこれもCをやっておくことの大きな利点だと思います。

 ちなみに私はC#やPythonも大好きな言語ですので、これらの言語を否定しているわけではありませんので、そこは誤解されないようにして頂ければと思います。

スポンサーリンク

.

posted by 勉三 at 15:11 | Comment(0) | TrackBack(0) | IT