毎日いくつのプログラミング言語を使用し、言語固有のタスクをどのように効果的に管理しますか[クローズ]


22

編集:

複数の言語で作業する場合、個々のタスクをどのように管理しますか

日々のタスク処理では、いくつの異なるプログラミング言語を使用しますか?

  • 各言語で作業するとき、あなたは精神的な変化をしますか?
  • それらに優先順位を付け、各タスクを言語ごとに個別に保持しますか。
  • 言語/ IDE /環境間でシームレスに切り替わる各タスクの進捗に基づいて段階的にコーディングしますか
  • 構文ではなく、すべての言語に同じコーディングスタイル/規則を適用していますか?

関連:

プログラマーが複数のプロジェクトに同時に取り組むことは正常ですか


1
メンタルシフトを行うのはとても簡単です。私が普段持っている主な精神的不調は.equals、javascriptで文字列と比較しようとするときです。少なくとも==、Java で使用するのではなく、常にそのようにエラーを出します。
WuHoUnited

同じプロジェクトの特定の日に3/4の言語を書いています。どのように管理しますか?言語を知る。参照を手元に置いてください。言語の規則に従ってください。
リグ

現在、Node.jsが世界最大のライブラリエコシステムを備えておりasync / awaitを使用して同期コードを記述できる場合、JavaScriptと一部のサーバーサイドプログラミング言語を切り替えるコストを支払う価値はありません。「どこでも1つの言語」というパラダイムは、Meteor(35,000以上のGitHubスター)でも使用されています。
ダンダスカレスク16年

回答:


25

今日、Java、Python、C ++、およびSQL(もし必要なら)を書きました。そして、私は2時間未満で仕事をしています。

これを定期的に行うと、精神的な変化は無視できます。マルチタスクとは関係ありません。しばらく歩いてから、車を運転し、自転車を運転し、水泳をするようなものです。問題ありません。それらは連続したものだからです。

とにかく、ポイントは次のタスクに移る前に1つのタスクを完了することです。具体的な機能、修正などの観点からタスクを定義する傾向があります。多くの場合、そのタスクは1つの言語のみで実行されますが、複数の言語が必要になる場合があります。たとえば、JNIを使用する場合、通常はJava側とネイティブ側の両方を同時に変更します。

いくつかの答え:

言語/ IDE /環境間でシームレスに切り替えられる各タスクの進捗に基づいて段階的にコーディングしますか

IDE、エディター、環境をシームレスに切り替えることができることが重要です。通常、私はそれらをすべて開いたままにします。

すべての言語に同じコーディングスタイル/規則を適用しますか(構文ではありません)?

それが2つの言語が話しているインターフェースである場合、はい-変数名などは類似している必要があります。それ以外の場合は、その言語の典型的なコーディングスタイルを適用しようとします。


8
素晴らしいレースのように聞こえます
-setzamora

私は通常、次のタスクに進む前に1つのタスクを完了しようとしますが、1つのタスクでは複数の言語を使用する必要があります。NetBeansなどのポリグロットIDEを使用するか、必要なすべてのエディターと環境を常に開いたままにしておく必要があります。そうすれば、言語(これは単なる「実装の詳細」)に注意を払う必要がなくなり、タスク(実際に実行する予定の一部である作業プログラム)に集中できます。
ジョナスプラッカ

上記を回答に追加し、コーディング/慣習プログラミングスタイルの扱い方について少し追加していただければ幸いです。
アディティアP

@AdityaGameProgrammer:いくつかのポイントを追加しました。
ジョナスプラッカ

18

ここに形成するパターンがあります:

  • フロントエンド:ブラウザで実行されるもの(javascript、html、css)
  • ビジネスロジック:あらゆる種類の汎用言語
  • バックエンド:SQL
  • ビルドスクリプト:一部のスクリプト言語

私にとっては、javascript、HTML、CSS、C#、Transact-SQL、およびWindows Powershellです。


すべての言語に同じコーディングスタイル/規則を適用しますか(構文ではありません)?

いいえ、私は言語の慣習に従ってプログラミングのポイントを作ります。簡単な例:

   // C#
   int MyFunction() 
   {
       return 0;
   }

   // Javascript
   function myFunction() {
      return 0;
   }

視覚的に異なるコーディング規則を採用することで、言語間の精神的な変化を起こすことができます。逆に、コードが各言語で同じように見えた場合、コーディングしている言語を忘れてしまうため、構文エラーが発生します。


1
+1良い答え。言語固有のコーディング規約とスタイルを維持できるのは素晴らしいことです。
アディティアP

さて..場合によっては、Javascriptは、厄介な暗黙のセミコロンのために、この方法で作業することを強制します。しかし、そうでない場合は、私は...それをする理由を見ていないだろう
ビリーONeal

コーディングスタイル以外に、言語間の精神的な変化を緩和する別の方法は、エディター/ IDEで各言語に異なるカラースキームを設定することです。
スポイケ

5

SK-logicで示されているように、適切に選択されたドメイン固有の言語を使用する場合、メンタルシフトは問題になりません。しかし、多くの場合、言語を選択できないため、切り替えに時間がかかることがあります。私の経験では、プログラミングスタイルの切り替えよりも構文の切り替えの方が困難です。私がいつも経験する唯一の迷惑なシフトは、コメントスタイルのシフトです。コード行をすばやく変更するためにファイルを開くだけの場合、それはよく起こります。

#  what
// the
;  f***
%  is
-- the one-line comment character or sequence?

4

私の最後の仕事:Java、C ++、C#、JavaScript、およびVBScript。

しかし、ありがたいことに、上記のすべては非常に異なるコンテキスト(およびいくつかの製品間)にありました。したがって、各コードベースを十分に理解すると、異なるコンテキストへのメンタル切り替えは実際には非常に簡単で論理的でした。

事実、私をさらに悩ませたのは、クライアントサポートの問題による中断でした。別の言語のタスクに内部的に切り替えること自体が問題になることはありませんでした。


2

私は2つの言語で作業しています:c#とpython。

同じプロジェクトで両方を使用しますが、明らかに異なるタスクに使用します。

タスクに取り組んでいるとき、完全な状態になるまで、またはそれ以上集中できなくなるまで、そのタスクに取り組んでいます。つまり、言語を切り替える必要がある場合、最後のタスクを完了した時点でどちらの言語でも思考から抜け出しているので、認知的不協和はほとんどまたはまったくありません。

確かに、仕事から出たら短い休憩を取ることになります。


2

できるだけ少ない。通常、1。Python、さらに2. HTMLテンプレート、3。HTML + CSS、および4. Javascriptが含まれます。PythonからJSに切り替えるには、さまざまなツールを使用する必要があるため、間違いなく精神的な変化が必要です。

HTML + CSSをHTMLテンプレートとは別に追加しますが、それ自体は言語ではないかもしれません(または、宗教に依存する可能性があります)。 Javascript。設計の観点からHTML + CSSをいじって、必要なモックアップのようにページを表示することは、HTMLテンプレートの作成とは異なる考え方です。しかし、それはJavascriptよりもPythonと直交しているため、プログラミングの考え方を別のものに切り替える必要があります。:)


2

私が使用する毎日:

  1. HTML / CSS
  2. Javascript / JQuery
  3. VBScript / JScript
  4. PHP
  5. SQL
  6. C#/ Asp.Net

また、Python、Java、XMLを時々使用します(それは重要ですか?)。私の仕事はさまざまなウェブサイトを編集することです。これらのウェブサイトは、任意のWeb言語で構築でき(Perlを1回使用したこともあります)、大幅に異なるパラダイム/テンプレート(プロシージャル、MVC、OOPなど)を使用できます。

質問に答えるには、最初にリストされている最初の5つのIDEとしてNotepad ++を使用し、次にVisual Studio for Asp.Netを使用します。

それは、各言語間で素早く切り替わる苦痛になる可能性があります-行末にセミコロンが必要かどうか、またはループにブレースがあるかどうかを思い出してください。VBScriptからJScriptへの切り替えは、これにとって絶対に最悪です-ファイルは両方とも.aspで終わり、一見するとかなり似ているため、エラーが発生する理由を見つけるのに時間がかかります。


ねえ、あなたもここで働かなければなりません!(j / k)PHPでASPおよび.NETコードベースを書き直し、同じ言語を選択できるようにしました。
greyfade

2

現時点では、Ruby、PHP、Java、C、およびJavaScriptを作成しており、毎日これらのそれぞれに最低1時間書き込みます。主な問題は、それらがすべて無関係のプロジェクトのためのものであるため、実際に時間を見つけることの問題です。

メンタルシフト

私の仕事のスタイルは、私が長時間働くのが好きです。残念なことに、これは、コードが1つしかないメンタルブロックに遭遇したときに、1つしか持っていない場合、それを乗り越えるのに長い時間がかかることを意味します。休憩を取ることも助けになりません。他のプロジェクト、特に他の言語を使用して、元の言語に戻るまでに行き詰まるたびに切り替えることで、すぐに解決策を得ることができます。

したがって、はい、精神的なシフトがあり、私はそれがはるかに生産的になると思います。

タスクの優先順位付け

タスクマネージャー(gTasks for Android)を使用し、プロジェクトごとに個別のToDoリストを用意しています。プロジェクトに複数の言語が必要な場合、それらを分離しません。これは通常、何らかの形で強く関連しているためです。たとえば、いくつかのAJAXを行うためのJavaScriptとRuby。言語が技術的には同じプロジェクト用であるが、プロジェクトが非常に大きく、本質的に無関係である場合、私はそれらを別々のプロジェクトとして数えるでしょう。

一般的に、優先度は「最もタスクが多いリスト」ですが、問題が発生した場合は常に切り替えます。

コーディング規約

ちょっとしたミックス:

  • プロジェクトが他の人と開発されている場合、私は明らかにそのプロジェクトのために決定された慣習に準拠します。
  • プロジェクトが個人的なものである場合、特定の言語のコミュニティ/標準ライブラリの主要なスタイルと一致するようにコードを表示したいです。たとえば、すべてのユーザー関数がsnake_caseにある場合、Javaコードを読むのは難しいと思います。同様に、RubyのcamelCaseメソッドは奇妙で場違いに見えます。
  • インデントなど、単に言語を使用するだけでは明らかにならない規則については、自分の標準を採用し、使用するすべての言語でそれらを使用する傾向があります。インデントの場合、常に2つのスペースを使用します。ブレーススタイルについては、Wikipediaが現在Compact Control Readability Styleと呼ぶことを決定しているものを常に使用しています。

余談:私にとって最大の課題は、実際にスタイル言語を切り替えることです。SASSをRubyと一緒にコーディングし、それ以外のすべてをCSSに戻す必要がある場合、競争することは非常に困難です。程度は少ないですが、HAML / HTMLとJSON / XMLでも同じ問題があります。


2

ISP側のアプリケーションを作成します。また、プログラミングに手を出す多くのネットワークエンジニアによって書かれた「快適なことをする」という文化もあります。本当に恐ろしいことに、非常によく書かれたプログラムを週単位で処理する必要があります。私が頻繁に遭遇し、取り組むもの...

  • Perl、多くの場合、1回限りのクイックスクリプト、またはPerlしか知らない(または好きな)人がよく使用します。レガシーのものの多くは、私が見つけたPerlで書かれています。最悪のもののいくつかはPerlで書かれていますが、それは言語が悪いからではなく、初心者プログラマーによって簡単に悪用されるためです。私は今でも、特定の種類の一時プログラムにこれを使用しています。大きいものにはめったに使用しません。
  • PHP、これはたくさんありますが、多くの場合、手を出す人のためのスターター言語です。いくつかの非常によく書かれたプログラム、いくつかのシュロック。特定の種類のWebアプリケーションについては、PHPを選択します。なぜなら、より早く地面に到達できるからです。
  • シェルスクリプト、主にログの読み取りなどの他のプログラムまたはタスクの実行に使用します。
  • Expectは、まだこれに遭遇します(そして、それをネットワークデバイスでコマンドを実行するのがnだと主張する熱狂者)。必要に応じて作業しますが、単一の機能を持たない数千行の長いプログラムの1つに遭遇すると、子猫は世界のどこかで殺されます。
  • C、移植性の問題のためほとんど使用されませんが、特定のタスクを実行するために使用します。
  • Javaでは、広範なライブラリサポートと簡単な展開のために、これをよく使用します。非常に異種のネットワークがあり、ITスタッフが私のものとは異なる議題を持っています。Javaを使用すると、ライブラリを含めることができ、プログラムを展開するために必要なシステムで何かを「アップグレード」する必要があることを心配する必要はありません。ほとんどの場合、これは私の選択したプログラミング言語です。

会社には他の言語(.net、VB、Phyton、Railsなど)もありますが、私はそれらに取り組む必要はありませんでした...まだ。

編集、編集のために ...

言語間で作業するときは、精神的にシフトする必要があります。ほとんどの場合、見落とすのは構文です。参考図書のコレクションを準備しています。他の言語の考え方に戻るには約30分かかります。言語の構文が鈍いほど、シフトは長くなります。しばらくPerlに触れなかった場合、JavaからPerlに移行するのにおそらく最も時間がかかることがわかります。これを行うほど、簡単になります。


1

1つのプロジェクトで6つ以上の言語を頻繁に使用しています。それらのほとんどは通常、そのプロジェクトのみに固有です。

メンタルシフトは、タスクに適切でない言語を使用している場合にのみ必要です。それ以外の場合は、最適なものを使用するのが自然です。プロジェクトのさまざまな段階で、さまざまな言語のセットが使用されます。


あなたはプロジェクトマネージャーですか、それともコードを書いていますか?
アディティアP

@AdityaGameProgrammer、私はそれらをコーディングします。
SKロジック

downvoteを説明する心?
SKロジック

1

私はC(組み込み)、C ++(デスクトップ)、Python、Matlab、VHDL(ハードウェアプログラミング言語の一種)を頻繁に使用します。多くの場合、すべて同じ日に使用します。私の環境では、この種の言語の器用さが私の見解では不可欠です。

特定のプロジェクトで必要なすべてを1つの言語で効率的に実行できないことがよくあります。たとえば、埋め込みCとVHDLはどちらも非常に低レベルなので、私はPythonを使用して結果を解析する(またはコードを生成する)こともよくあります。

それらを素早く切り替えることは、しばらくして問題ではなく、ハンマーからドライバーに切り替えるようなものです。仕事に最適なツールです。


1

作業の定義方法に大きく依存します...毎日Microsoft Surfaceアプリケーションの開発にC#を使用しています。Java Androidアプリケーションにも毎日使用しています。しかし、私は自分自身を教育し、R、Ruby、Objective-Cを使い始めました。時にはSQLも必要です。スクリプト言語や他の言語を質問に含めると、JavaScipt、SPARQL、BeanShellも含まれます。

すべての言語に同じコーディングスタイル/規則を適用しますか(構文ではありません)?

私は各言語のコーディング規約に従うようにしていますが、特にJavaとC#の間では、中括弧とC#の大文字のメソッド命名のためにいくつかの困難があります。

public void test() {
   ...
}

public void Test()
{
   ...
}

C#では、どちらのスタイルの波括弧も受け入れられます。これについてあなたの脳に負担をかけすぎないでください。:
コーディグレー

0

Webアプリを作成します。そのため、現在その:

  • XHTML
  • JavaScript
  • の一部としてのC#
  • ASP.Netフレームワーク(このソートのは、あまりにも言語です)
  • データベース通信用のT-SQL
  • 人間とのコミュニケーションのための英語。

エディター:Sublime Text(out of choice)、Visual Studio 2010(ASP.Netに関しては他に実行可能な選択肢はありません)


0

私の仕事では、Java、C、Python、Django、および小さなPHPを使用しています。また、MicrosoftのC ++で非常に小さなプロジェクトに取り組みました。

すべてを毎日使用するわけではありませんが、何日かすべてを問題なく使用しています。典型的な日に私は1つか2つだけを使用します。自宅で行うプログラミングには、通常、QtやRuby on Railsのような職場で使用するものとは異なるテクノロジーを使用することが含まれます。

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