软件工程师应该学习多少种语言?

时间:2022-09-11 10:31:58

How many languages should a software engineer need to learn? I am a student of B Tech 2 and and I only have a knowledge of C. Please tell me about other languages and courses which a software engineer needs.

软件工程师需要学习多少种语言?我是B Tech 2的学生,而且我只有C的知识。请告诉我软件工程师需要的其他语言和课程。

11 个解决方案

#1


Try to learn languages with different paradigms, this will improve your skills in all languages (one language for each paradigm is ok, I'm listing in my order of preference):

尝试学习具有不同范式的语言,这将提高您在所有语言中的技能(每种范例的一种语言都可以,我按照我的偏好顺序列出):

  • "Structured Programming": C, maybe Fortran if you're going to work with numerics
  • “结构化编程”:C,如果你打算使用数字,可能是Fortran

  • Generic Programming & OO: C++
  • Generic Programming&OO:C ++

  • Script Language: Python, Ruby or Perl; Matlab if you want numerics
  • 脚本语言:Python,Ruby或Perl; Matlab如果你想要数字

  • Heavy Object Oriented with VM: C#, Java or Smalltalk
  • 面向VM的重型对象:C#,Java或Smalltalk

  • Functional Programming: Ocaml, Haskell, Scala
  • 函数式编程:Ocaml,Haskell,Scala

  • Machine Programming: i686 Assembly
  • 机器编程:i686组装

  • Logic Declarative Programming: Prolog
  • 逻辑声明性编程:Prolog

  • Database Querying Language: SQL
  • 数据库查询语言:SQL

But also don't rush yourself... learn one language at a time... maybe a new language every year... with this you're going to have a very handy toolbox for any problem you might need to solve ;)

但也不要急于自己......一次学习一种语言......也许每年都会使用一种新语言......有了这个,你就会有一个非常方便的工具箱来解决你可能需要解决的任何问题;)

#2


The key is not the number of languages but the depth of knowledge.

关键不是语言的数量,而是知识的深度。

#3


At least 17

至少17岁

#4


As always, 42.

一如既往,42。


Barring that, I suggest you look into languages which are as different as possible, e.g. :

除此之外,我建议您研究尽可能不同的语言,例如: :

  • Learning C? Take Ruby for a spin;
  • 学习C?以Ruby为旋转;

  • Top-class Python hacker? Look into C# and see what that does.
  • *Python黑客?查看C#并查看它的作用。

  • Java know-it-all? Take a deep breath and dive into Haskell.
  • Java知道所有吗?深吸一口气,潜入Haskell。

#5


I always say the number is 1 - the primary language you use daily.

我总是说数字是1 - 你每天使用的主要语言。

It helps to be conversant in others, but its ok to be less proficient in them - you only need them to understand what's happening, and to know when to ask an expert in that language/setup.

它有助于熟悉他人,但可以不那么熟练 - 你只需要他们了解正在发生的事情,并知道何时向该专家介绍该语言/设置。

#6


There are things which are more important than the number of languages.

有些东西比语言的数量更重要。

For example, The Base Knowledge, underlying architecture, programming paradigms etc.

例如,基础知识,底层架构,编程范例等。

IMO, instead of learning two OOP languages, you would be better of learning one structured, one OO and one Functional language.

IMO,不是学习两种OOP语言,而是学习一种结构化的,一种OO和一种功能语言。

#7


You might want to look at the popularity index. But, remember popularity is not everything.

您可能想要查看流行度指数。但是,记住人气不是万能的。

Choose a programming language to start yourself -- And, C is quite good.
Continue getting better at programming over years. Track tutorials and practice.

选择一种编程语言来开始自己 - 而且,C非常好。多年来继续改进编程。跟踪教程和练习。

Focus on Algorithms and efficient programming in whatever language you use.

专注于使用您使用的任何语言的算法和高效编程。

#8


If you understand the concepts behind the language (which could be any language) then you can pick up other languages as and when you need them relatively easily. Here I'm talking about the basics like loops, arrays and the like as well as object orientation, aspect orientation and procedural programming.

如果您理解语言背后的概念(可能是任何语言),那么您可以在相对容易的时候选择其他语言。这里我讲的是循环,数组等基础知识,以及面向对象,方面方向和过程编程。

There will be certain aspects of any language that only someone with in-depth knowledge will know, but these are relatively rare and discoverable.

任何语言都会有某些方面只有知识渊博的人知道,但这些方面相对较少且可被发现。

#9


You should know enough languages to be able to make an educated guess on which would be most appropriate to use for any given problem that needs to be solved.

您应该了解足够多的语言,以便能够对任何需要解决的特定问题进行最合适的猜测。

#10


there isn't a specific answer to your question. Some people can do well with a few, while some people prefer to be the 'go-to' person who knows almost everything.

你的问题没有具体的答案。有些人可以与少数人相处得很好,而有些人更愿意成为几乎所有人都知道的“首选”人。

In my opinion, for a student like yourself, knowing as many languages as possible isn't going to be productive and by the time you graduate, possibly the things that you learnt aren't of cutting edge anymore. One thing you can do if you're the practical kind of person is to look at jobs listing and their descriptions to see what skills you need to do well at that job.

在我看来,对于像你这样的学生来说,知道尽可能多的语言是不会有效的,当你毕业时,你所学到的东西可能不再是尖端的。如果你是一个实际的人,你可以做的一件事是查看工作列表和他们的描述,看看你需要哪些技能来完成这项工作。

Totally unrelated, but someone once told me that good programmers do well no matter what programming language/environment they use. That being said, it's easier to do well in some environments than others.

完全没有关系,但有人曾经告诉我,无论他们使用什么编程语言/环境,优秀的程序员都能做得很好。话虽如此,在某些环境中比在其他环境中做得更好。

I would recommend knowing at least a scripting language (like PHP) and another managed language (Java or C#) before you graduate.

我建议您在毕业前至少知道一种脚本语言(如PHP)和另一种托管语言(Java或C#)。

As for skills, you just need to program more to gain experience. In my opinion, the more you practise, the better you will be at it. At the very least, you should know some OOP programming and data structures. Generally, just try to learn things that would make yourself useful (to the world, or to the employers).

至于技能,你只需要编程更多以获得经验。在我看来,你练的越多,你就会越好。至少,你应该知道一些OOP编程和数据结构。一般来说,只是尝试学习能让自己变得有用的东西(对世界或雇主而言)。

I hope this helps. =)

我希望这有帮助。 =)

#11


A software engineer does not need to know any programming languages at all. A developer needs programming languages. The purpose of a software engineer is to model a software system in general (like: How many tiers? SOA? etc.) - for that you don't need programming...

软件工程师根本不需要知道任何编程语言。开发人员需要编程语言。软件工程师的目的是为软件系统建模(例如:多少层?SOA?等) - 因为你不需要编程......

If you need to do software development it is most important to understand basic concepts (like Object Oriented vs. procedural, imperative vs. functional, compiled language vs. scripting language, etc.).

如果您需要进行软件开发,最重要的是要理解基本概念(如面向对象与程序,命令与功能,编译语言与脚本语言等)。

Also, you should understand algorithms and their complexity (but that again is language independant).

此外,您应该了解算法及其复杂性(但这又是语言独立的)。

#1


Try to learn languages with different paradigms, this will improve your skills in all languages (one language for each paradigm is ok, I'm listing in my order of preference):

尝试学习具有不同范式的语言,这将提高您在所有语言中的技能(每种范例的一种语言都可以,我按照我的偏好顺序列出):

  • "Structured Programming": C, maybe Fortran if you're going to work with numerics
  • “结构化编程”:C,如果你打算使用数字,可能是Fortran

  • Generic Programming & OO: C++
  • Generic Programming&OO:C ++

  • Script Language: Python, Ruby or Perl; Matlab if you want numerics
  • 脚本语言:Python,Ruby或Perl; Matlab如果你想要数字

  • Heavy Object Oriented with VM: C#, Java or Smalltalk
  • 面向VM的重型对象:C#,Java或Smalltalk

  • Functional Programming: Ocaml, Haskell, Scala
  • 函数式编程:Ocaml,Haskell,Scala

  • Machine Programming: i686 Assembly
  • 机器编程:i686组装

  • Logic Declarative Programming: Prolog
  • 逻辑声明性编程:Prolog

  • Database Querying Language: SQL
  • 数据库查询语言:SQL

But also don't rush yourself... learn one language at a time... maybe a new language every year... with this you're going to have a very handy toolbox for any problem you might need to solve ;)

但也不要急于自己......一次学习一种语言......也许每年都会使用一种新语言......有了这个,你就会有一个非常方便的工具箱来解决你可能需要解决的任何问题;)

#2


The key is not the number of languages but the depth of knowledge.

关键不是语言的数量,而是知识的深度。

#3


At least 17

至少17岁

#4


As always, 42.

一如既往,42。


Barring that, I suggest you look into languages which are as different as possible, e.g. :

除此之外,我建议您研究尽可能不同的语言,例如: :

  • Learning C? Take Ruby for a spin;
  • 学习C?以Ruby为旋转;

  • Top-class Python hacker? Look into C# and see what that does.
  • *Python黑客?查看C#并查看它的作用。

  • Java know-it-all? Take a deep breath and dive into Haskell.
  • Java知道所有吗?深吸一口气,潜入Haskell。

#5


I always say the number is 1 - the primary language you use daily.

我总是说数字是1 - 你每天使用的主要语言。

It helps to be conversant in others, but its ok to be less proficient in them - you only need them to understand what's happening, and to know when to ask an expert in that language/setup.

它有助于熟悉他人,但可以不那么熟练 - 你只需要他们了解正在发生的事情,并知道何时向该专家介绍该语言/设置。

#6


There are things which are more important than the number of languages.

有些东西比语言的数量更重要。

For example, The Base Knowledge, underlying architecture, programming paradigms etc.

例如,基础知识,底层架构,编程范例等。

IMO, instead of learning two OOP languages, you would be better of learning one structured, one OO and one Functional language.

IMO,不是学习两种OOP语言,而是学习一种结构化的,一种OO和一种功能语言。

#7


You might want to look at the popularity index. But, remember popularity is not everything.

您可能想要查看流行度指数。但是,记住人气不是万能的。

Choose a programming language to start yourself -- And, C is quite good.
Continue getting better at programming over years. Track tutorials and practice.

选择一种编程语言来开始自己 - 而且,C非常好。多年来继续改进编程。跟踪教程和练习。

Focus on Algorithms and efficient programming in whatever language you use.

专注于使用您使用的任何语言的算法和高效编程。

#8


If you understand the concepts behind the language (which could be any language) then you can pick up other languages as and when you need them relatively easily. Here I'm talking about the basics like loops, arrays and the like as well as object orientation, aspect orientation and procedural programming.

如果您理解语言背后的概念(可能是任何语言),那么您可以在相对容易的时候选择其他语言。这里我讲的是循环,数组等基础知识,以及面向对象,方面方向和过程编程。

There will be certain aspects of any language that only someone with in-depth knowledge will know, but these are relatively rare and discoverable.

任何语言都会有某些方面只有知识渊博的人知道,但这些方面相对较少且可被发现。

#9


You should know enough languages to be able to make an educated guess on which would be most appropriate to use for any given problem that needs to be solved.

您应该了解足够多的语言,以便能够对任何需要解决的特定问题进行最合适的猜测。

#10


there isn't a specific answer to your question. Some people can do well with a few, while some people prefer to be the 'go-to' person who knows almost everything.

你的问题没有具体的答案。有些人可以与少数人相处得很好,而有些人更愿意成为几乎所有人都知道的“首选”人。

In my opinion, for a student like yourself, knowing as many languages as possible isn't going to be productive and by the time you graduate, possibly the things that you learnt aren't of cutting edge anymore. One thing you can do if you're the practical kind of person is to look at jobs listing and their descriptions to see what skills you need to do well at that job.

在我看来,对于像你这样的学生来说,知道尽可能多的语言是不会有效的,当你毕业时,你所学到的东西可能不再是尖端的。如果你是一个实际的人,你可以做的一件事是查看工作列表和他们的描述,看看你需要哪些技能来完成这项工作。

Totally unrelated, but someone once told me that good programmers do well no matter what programming language/environment they use. That being said, it's easier to do well in some environments than others.

完全没有关系,但有人曾经告诉我,无论他们使用什么编程语言/环境,优秀的程序员都能做得很好。话虽如此,在某些环境中比在其他环境中做得更好。

I would recommend knowing at least a scripting language (like PHP) and another managed language (Java or C#) before you graduate.

我建议您在毕业前至少知道一种脚本语言(如PHP)和另一种托管语言(Java或C#)。

As for skills, you just need to program more to gain experience. In my opinion, the more you practise, the better you will be at it. At the very least, you should know some OOP programming and data structures. Generally, just try to learn things that would make yourself useful (to the world, or to the employers).

至于技能,你只需要编程更多以获得经验。在我看来,你练的越多,你就会越好。至少,你应该知道一些OOP编程和数据结构。一般来说,只是尝试学习能让自己变得有用的东西(对世界或雇主而言)。

I hope this helps. =)

我希望这有帮助。 =)

#11


A software engineer does not need to know any programming languages at all. A developer needs programming languages. The purpose of a software engineer is to model a software system in general (like: How many tiers? SOA? etc.) - for that you don't need programming...

软件工程师根本不需要知道任何编程语言。开发人员需要编程语言。软件工程师的目的是为软件系统建模(例如:多少层?SOA?等) - 因为你不需要编程......

If you need to do software development it is most important to understand basic concepts (like Object Oriented vs. procedural, imperative vs. functional, compiled language vs. scripting language, etc.).

如果您需要进行软件开发,最重要的是要理解基本概念(如面向对象与程序,命令与功能,编译语言与脚本语言等)。

Also, you should understand algorithms and their complexity (but that again is language independant).

此外,您应该了解算法及其复杂性(但这又是语言独立的)。