您每天使用几种编程语言,以及如何有效管理特定于语言的任务[关闭]


22

编辑:

使用多种语言时如何管理单个任务

在日常任务处理中,您使用多少种不同的编程语言?

  • 使用每种语言时,您是否会改变思维方式?
  • 您是否对它们进行优先级排序,并将每个任务分别保留在每种语言中。
  • 是否根据每个任务在语言/ IDE /环境之间无缝切换的进度分阶段进行编码
  • 您是否对所有语言(而不是语法)应用相同的编码样式/惯例?

有关:

程序员同时从事多个项目是否正常?


1
进行精神​​转变非常容易。我通常最主要的心理失误是当我尝试.equals在javascript中比较Strings与。至少我总是那样出错,而不是==在Java中使用。
WuHoUnited 2011年

我在同一天为同一项目写3/4种语言。我该如何管理?懂语言。保持参考方便。请遵循语言约定。
钻机2012年

如今,当Node.js拥有世界上最大的库生态系统,并且可以使用async / await编写同步代码时,支付JavaScript和某些服务器端编程语言之间的切换成本如今已不值得。流星(35,000多个GitHub星)也使用“无处不在的一种语言”范例。
Dan Dascalescu

Answers:


25

今天,我已经编写了Java,Python,C ++和SQL(如果需要的话)。而且我已经工作了不到2个小时。

如果您定期执行此操作,则精神转变可以忽略不计。它与多任务处理无关。就像走了一会儿,然后开车,然后骑自行车,然后游泳一样。没问题,因为它们是顺序的东西。

无论如何,关键是要先完成一项任务再转移到下一项。我倾向于根据具体功能,修复程序等来定义任务。通常该任务仅用一种语言完成,但可能需要其中几种。例如,在使用JNI时,通常会并行更改Java和本机端。

一些答案:

您是否根据每个任务在语言/ IDE /环境之间无缝切换的进度分阶段进行编码

能够在IDE,编辑器和环境之间无缝切换非常重要。通常我会一直保持打开状态。

您是否在所有语言上都应用了相同的编码风格/惯例(不是语法)?

如果这是一个使用两种语言进行交流的接口,则可以-变量名等必须相似。否则,我尝试应用该语言的典型编码样式。


8
听起来像是一场了不起的比赛
setzamora 2011年

我通常会先尝试完成一项任务,然后再进行下一项任务,但是一项任务很可能需要使用多种语言。必须使用多种语言的IDE(例如NetBeans)和/或始终保持所有需要的编辑器和环境处于打开状态。这样,您就不必太在意语言(这只是“实现细节”),而您可以专注于任务(这是您真正应该完成的一部分-一个工作程序)。
乔纳斯·普拉卡

如果可以将以上内容添加到答案中,并添加一些有关如何处理编码/约定编程样式的信息,那将是很好的。
Aditya 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好答案。非常高兴您能够维持特定于语言的编码约定和样式。
Aditya P

好吧..在某些情况下,由于讨厌的隐式分号,JavaScript迫使您以这种方式工作。但是,否则我将没有理由这样做……
Billy ONeal

除编码样式外,另一种减轻语言之间精神转变的方法是在编辑器/ IDE中为每种语言设置不同的配色方案。
Spoike 2011年

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模板的想法不同。但是它比Python更正交于Python,而不是Javascript,这意味着我需要将编程思想换成另一种。:)


2

我每天使用:

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

我也偶尔使用Python,Java和XML(这算吗?)。我的工作涉及编辑各种网站,这些网站可以用任何一种网络语言(甚至一次使用Perl都可以构建),并使用截然不同的范例/模板(过程,MVC,OOP等)。

要回答这个问题-我主要使用Notepad ++作为列出的前5个IDE,然后使用Visual Studio for Asp.Net。

在每种语言之间快速切换可能会很痛苦-记住您是否在行尾需要分号,或者循环是否带有花括号。从VBScript切换到JScript绝对是最糟糕的-这些文件都以.asp结尾,乍一看看起来非常相似,所以花点时间弄清楚为什么我会出错。


嘿,你也必须在这里工作!(j / k)我们正在用PHP重写ASP和.NET代码库,使我们可以选择相同的语言。
greyfade

2

目前,我正在编写Ruby,PHP,Java,C和JavaScript,并且每天至少要写1个小时。主要问题实际上是找到时间,因为它们都是无关项目的时间。

心理转变

我的工作风格使我喜欢长时间工作。不幸的是,这意味着如果我只穿一件衣服,当我遇到带有一段代码的思维障碍时,要花很长时间才能克服它。我也发现休息也没有帮助。通过让其他项目(尤其是其他语言)在遇到困难时可以切换到原始语言,我立即有了解决方案。

因此,是的,这是一种精神上的转变,我认为这使我的工作效率大大提高。

优先任务

我使用任务管理器(适用于Android的gTasks),每个项目都有一个单独的待办事项列表。如果一个项目需要多种语言,那么我不会将它们分开。这通常是因为它们将以某种方式密切相关。例如,JavaScript和Ruby用于完成一些AJAX任务。如果从技术上讲这些语言是用于同一项目的,但是该项目太大,以至于它们基本上无关,那么我可能会将它们视为单独的项目。

通常,我的优先级是“任务最多的列表”,但是如果遇到问题,我将始终切换。

编码约定

有点混合:

  • 如果该项目是与其他人一起开发的,那么显然我将遵守该项目所决定的任何约定。
  • 如果该项目是个人项目,那么我希望我的代码看起来与给定语言的社区/标准库中的主导风格一致。例如,如果所有用户功能都在snake_case中,我很难阅读Java代码。同样,Ruby中的camelCase方法看起来很奇怪而且不合适。
  • 对于仅使用某种语言(例如缩进)并不能使惯例变得明显的约定,我倾向于采用自己的标准,并在所有使用的语言中使用它们。在缩进的情况下,我总是使用2个空格。对于大括号样式,我总是使用Wikipedia当前确定的“ 紧凑控件可读性样式”

另外:对我来说最大的挑战实际上是在样式语言之间切换。在与Ruby一起对SASS进行编码时,随后必须切换回CSS来进行其他所有工作,这是非常困难的。在较小程度上,我对HAML / HTML和JSON / XML有相同的问题。


2

我为ISP方面编写应用程序,还有一种“做自己喜欢的事情”的文化,通常是由许多从事编程工作的网络工程师编写的。我必须每周处理写得非常好,非常恐怖的程序。我经常会遇到的工作

  • Perl,通常是一次性一次性脚本,或者经常由仅了解(或喜欢)Perl的人使用。我发现更多的遗留东西是用Perl编写的。一些最糟糕的东西是用Perl编写的,不是因为语言不好,而是因为它很容易被新手程序员所误用。我仍然将此用于某些类型的一次性程序。我很少将它用于更大的东西。
  • PHP,很多类似的东西,通常是入门者的入门语言。一些写得很好的程序,一些schlock。对于某些类型的Web应用程序,我将选择PHP,因为我可以使其更快地投入使用。
  • Shell脚本,通常用于运行其他程序或任务,例如读取日志。
  • 期望,仍然会遇到这种情况(和狂热者坚持认为这是在网络设备上执行命令的必杀技)。我不得不在需要的时候进行这项工作,但是当我遇到成千上万行长程序中的一个而又看不到任何功能时,只是一个长的迭代式意大利面农场,那么一只小猫被杀死了。
  • C,由于可移植性问题很少使用,但是我将使用它来执行特定任务。
  • Java,由于广泛的库支持和易于部署,我经常使用它。我们的网络非常异构,IT人员的议程与我的议程不同。使用Java,我可以包含库,而不必担心IT部门必须“升级”我要部署程序的系统上的某些内容。通常,这是我选择的编程语言。

公司中还有其他语言(.net,VB,Phyton,Rails等),但是我还没有使用这些语言...。

编辑的编辑 ...

当您在不同语言之间工作时,您确实必须转变思维。最常见的是语法。我准备了一些参考书。我会发现大约需要半小时才能回到另一种语言的思维模式。语言的语法越模糊,转换的时间就越长。我发现,如果我有一段时间没有接触过Perl,从执行Java到执行Perl的转换可能花费的时间最长。您做得越多,越容易获得。


1

我经常在一个项目中使用六种或更多种语言。它们中的大多数通常仅特定于该项目。

仅当您使用的语言不适用于任务时,才需要进行心理转移。否则,自然会使用最合适的方法。不同的语言集用于项目的不同阶段。


您是项目经理还是在其中编码?
Aditya P

@AdityaGameProgrammer,我在其中编写代码。
SK-logic

介意解释反对票吗?
SK-logic

1

我经常在同一天使用C(嵌入式),C ++(台式机),Python,Matlab和VHDL(一种硬件编程语言)。在我的环境中,我认为这种语言的灵活性至关重要。

我常常无法有效地用一种语言完成特定项目所需的一切。例如,嵌入式C和VHDL都是很底层的,所以我经常使用Python解析它们的结果(甚至生成代码)。

不久之后,它们之间的快速切换就不再是问题,就像从锤子改成螺丝刀一样,这是完成任务的正确工具。


1

这实际上取决于如何定义工作方式。...我每天都使用C#开发Microsoft Surface应用程序。Java我也每天都在Android应用程序中使用Java。但是我尝试进行自我教育,并开始使用R,Ruby和Objective-C。有时我还需要一些SQL,如果您在问题中包含脚本语言和其他语言,则还需要JavaScipt,SPARQL和BeanShell。

您是否在所有语言上都应用了相同的编码风格/惯例(不是语法)?

我尝试遵循每种语言的编码约定,但是特别是在Java和C#之间,由于花括号和C#中的大写方法命名,我遇到了一些困难:

public void test() {
   ...
}

public void Test()
{
   ...
}

花括号中的任何一种样式在C#中都是可接受的。不要花太多时间为此费劲。:-)
Cody Gray

0

我建立网路应用程式。所以目前它:

  • XHTML
  • 的JavaScript
  • C#作为
  • ASP.Net框架(这个排序是一种语言太)
  • T-SQL用于数据库通信
  • 与人交流的英语。

编辑者:Sublime Text(无法选择),Visual Studio 2010(对于ASP.Net,没有其​​他可行的选择)


0

在我的工作中,我使用Java,C,Python,Django和少量PHP。我还在Microsoft C ++上的一个非常小的项目中工作。

我不会每天都使用它们,但是有时候我会毫无问题地使用它们。通常,我一天只使用一两个。我在家中进行的编程通常涉及使用与在Qt或Ruby on Rails等工作中使用的技术不同的技术。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.