开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
今日推荐开源项目:《读万卷书 free-books》
今日推荐英文原文:《How to Choose A Programming Language for a Project》

今日推荐开源项目:《读万卷书 free-books》传送门:GitHub链接
推荐理由:新的一个月自然要学点新的技能,这个项目就收集了学习新技能用得上的免费书籍。列表里包括了 Web,数据库和各种编程语言等等,从中学习一些技能相当适合;再往上的话还有一些包括密码学和数学在内的理论书籍,可以作为了解概念的好机会,保持学习新的技能,了解新的知识,才不会在逆流中缓缓后退。
今日推荐英文原文:《How to Choose A Programming Language for a Project》作者:
原文链接:https://medium.com/better-programming/how-to-choose-a-programming-language-for-a-project-7c7a3e5a4de6
推荐理由:为纠结于选择工具的人提供的一些建议

How to Choose A Programming Language for a Project

Questions to ask when you’re choosing which language to use for your project

Choosing a programming language for a project is different than choosing one to learn. Often, people will tell you that there’s no choice. Certain languages are chosen as the industry standard, and you just have to adapt. With as little freedom as you have, there are still some considerations to be made when choosing a programming language. After all, it will impact the main constraints on your project, such as time, budget, resources, and maintainability, and etc.

Image from https://insights.stackoverflow.com/survey/2019#technology

In Corporate IT departments, this is often one of the issues technology managers struggle with at the beginning of many in-house software projects. Sometimes, the decision will stare you in the face when you’re trying to scale up legacy systems and bring them up-to-date.

When I was working in Corporate IT, our developers had to maintain high-performance applications that were time-critical. These applications were mostly written in Java and C++. However, as projects progressed, the need to scale up for performance was increasingly apparent.

Java’s handling of concurrency became such a problem that the team ultimately decided to try a different programming language, even when no one on the development team knew how to program in that language. The investment in time and budget ultimately meant the team had to take a huge risk. But, in the end, just rewriting one component allowed huge improvements in performance. It also allowed for more stability within a critical part of the application.

The lesson here is that often, the problems that we encounter in our IT projects will propel us to re-examine our programming language choices. This is an accepted part of the evolution of any IT project.

As a product manager, program manager, and technical manager, knowing all the moving pieces in a project is important. This is why it’s important to know how all the components of your project might lead you to choose specific programming languages. Knowing this will allow for a better view of the future of the project.

Any time you choose a new language, it’s a game-changing amount of overhead (resources, time, and effort) added onto your project. Having a good view at the beginning of the project and making a sensible programming language choice will lead to less time spent in maintaining the project, scaling up the project, and securing the project later on.

Ultimately, you want your software project to stay for the long haul, serving the business needs of your customers even through the business changes that may occur.

What Are the Questions to Ask When Choosing a Programming Language?

This is by no means a comprehensive list of questions. But it’s a list that can serve as a starting point to choose the programming language that you’ll need.
  • Does the language have proper ecosystem support? Will the language survive for the long haul? Is there vendor support provided for the language?
  • What’s the environment that the project will run on — web, mobile, etc.?
  • Are there infrastructure considerations to using the programming language, such as new hardware required? What are the deployment considerations?
  • Does the client prefer a certain programming language to be used?
  • Are there specific libraries, features, and tools for a programming language that are the industry standard for this type of project?
  • Can our developer program in this language? Do we need to hire new developers? Can our developers learn the new programming language quickly?
  • What are the constraints of your project that are non-negotiable — time, budget, resources?
  • What are the performance considerations of the project? Will the language accommodate the benchmarks and the performance?
  • Are there any legacy codebase considerations for the project?
  • Are there any interface issues with upstream and downstream systems or external systems?
  • Does it need to integrate with third-party tools?
  • Are there any security considerations?

How Are Programming Languages Being Used Today?

  • Web Applications : JavaScript, PHP, Ruby, HTML/CSS, TypeScript
  • Mobile Applications: Swift, Java, JavaScript, Object-C
  • Operating Systems: C, C++
  • Distributed Systems: Go
  • Enterprise Applications: Java, C#, C+, ErLang
  • Analytics & Machine Learning: Python, R, Clojure, Julia
  • Math & Scientific Computing: Matlab, FORTRAN, ALGOL, APL, Julia, R
  • Data Visualization: Python, R, Java, C#
  • Big Data: Java, Python, R, Scala, Clojure
  • Data Storage: SQL, C#, Java, Python

Final Thoughts

With a list of questions to ask and a list of programming language conventions, no matter what type of project you’re working on, you can make a sensible decision regarding the language that you use.

Asking the right questions will allow you to back up the usage with evidence supported by industry standards and conventions. In the end, making the right programming language choice will enable you to develop systems that will weather the changes in business needs.

What are you waiting for?
下载开源日报APP:https://openingsource.org/2579/
加入我们:https://openingsource.org/about/join/
关注我们:https://openingsource.org/about/love/