developer tip

다른 언어로 개발을위한 상대적 비용 연구

optionbox 2020. 12. 12. 10:37
반응형

다른 언어로 개발을위한 상대적 비용 연구


다른 언어를 사용하는 소프트웨어 개발의 상대적 비용에 대한 최근 (그리고 상당히 균형 잡힌) 연구를 본 사람이 있습니까? 특히 Java Vs의 상대적 비용을보고 싶습니다. C # 대. 델파이.


이러한 종류의 양적 비교는 복잡한 변수의 수로 인해 찾기가 매우 어려울 것입니다. 개발자의 언어 경험, 대상 도메인에 대한 언어의 적합성, 개발자의 전반적인 품질 (비주류 언어가 아니라고 주장되어 왔습니다) 더 높은 품질의 개발자 유치), 결과 제품과의 장단점 (Ruby 또는 Python 앱이 잘 작성된 Delphi 또는 C ++ 앱만큼 빠릅니까?) 등

In Code Complete, 2nd Ed. , Steve McConnell은 표현력 측면에서 여러 언어를 나열합니다 (각 언어의 단일 명령문에서 동일한 C 코드 줄을 몇 줄로 표현할 수 있는지). 프로그래머의 코드 라인 생산성은 언어에 관계없이 비교적 일정하다고 제안되었습니다. 이것이 사실이라면, 각 언어의 표현력은 각 언어의 상대적 개발 비용을 대략적으로 추정해야합니다. 62 페이지 표 4.1에서 :

C와 관련된 언어 수준
C 1
C ++ 2.5
포트란 95 2
자바 2.5
펄 6
파이썬 6
스몰 토크 6
비주얼 베이직 4.5

그는이 테이블에 대한 여러 소스를 나열 산정 소프트웨어 비용 , COCOMO II와 소프트웨어 비용 추정 하고, (에서 Prechelt에 의해, "언어 프로그래밍 세븐의 실증적 비교" IEEE 컴퓨터 년 10 월 2000).

McConnell이 인용 한 수치는 모두 몇 년이 지났지 만 내가 이해하는 바에 따르면 Cocomo II 모델은 엄청나게 상세하므로 현재 Cocomo II 자료는 Delphi 및 C #에서 현재 수치를 제공 할 수 있습니다.


아니요.하지만 저는 열광적이지 않으며 컨설턴트로 일하고 제가 가진 모든 요구 사항에 대해 그중 하나를 추천하는 데 사용합니다. 따라서 다음은 사용자가 가질 수있는 시스템 개발 요구 사항을 해결하기 위해 사용할 항목을 더 쉽게 선택할 수있는 몇 가지 사실입니다.

공통점 :

그들 모두는 해당 분야에서 최고입니다.

  • Java는 최고의 Java 개발 옵션입니다.
  • C #은 최고의 .NET 개발 옵션입니다.
  • Delphi는 최고의 네이티브 개발 옵션입니다.

그들 모두는 :

  • 고품질 구성 요소 및 라이브러리를 제공하는 전세계 타사 공급 업체.
  • 이를 사용하여 만든 전 세계적으로 잘 알려진 응용 프로그램 (예를 들어 Delphi 응용 프로그램은 TV 용 Yahoo Go !, Macromedia Captivate, TotalCommander, MediaMonkey, FinalBuilder, InstallAware, WinLicense, MySQL 관리자 등)가 더 많이 알려져 있습니다.

모두 다음과 같습니다.

  • RAD 기능이있는 매우 안정적인 기술.
  • 최고의 개발 지원 도구 (UML 등)가 지원합니다.
  • 해당 기술의 주요 업그레이드 릴리스 (Java 7, .NET 4.0 및 Delphi 멀티 플랫폼).

차이점 :

C #이 더 나은 3 가지 :

  • 코드를 작성할 수있는 사용 가능한 개발자 수 (Java와 비교).
  • 뒤에 Microsoft가 있습니다.
  • 임금 측면에서 개발 비용이 저렴합니다 (보통).

3 자바가 더 나은 점 :

  • 코드를 작성할 수있는 (Delphi와 비교하여) 사용 가능한 개발자 수 (*).
  • 휴대 성.
  • 뒤에 태양이 있습니다.

델파이가 더 나은 3 가지 :

  • 속도 (시간이 중요한 시스템의 경우 더 나은 성능).
  • 작은 풋 프린트 (Delphi 컴파일러는 정말 작은 바이너리를 생성합니다).
  • 명시 적 종속성이 없습니다 (쉽게 배포).

(*) Java로 코딩 할 수있는 다른 언어 개발자보다 C #으로 코딩 할 수있는 다른 언어 개발자가 더 많다는 매우 신뢰할 수있는 사실이 있습니다. 이는 C # 프로그래머를 더 쉽게 찾을 수 있음을 의미합니다. 많은 웹 사이트 (예 :이 웹 사이트)와 다국어 질문, 리팩토링 등을 허용하는 포럼에서 일반적으로 더 많은 C # 질문과 답변 ( 84k 대 50k ) 이있는 이유를 설명 할 수 있습니다 . 또한 Java 작업은 전 세계 여러 지역에서 가장 높은 임금 을 받기 때문에 Java 개발자는 C # 개발자보다 더 오래 근무하기 때문에 C # 개발자보다 Java 개발자를 찾기가 더 어렵습니다. 물론 논의 할 수있는 몇 가지 다른 요소가 있지만 일반적으로 Java 프로그래머보다 C # 프로그래머를 찾는 것이 더 쉽다고 확신합니다.


공식적인 연구에 대해서는 잘 모르지만 델파이에서 기존 앱을 사용하고 어떤 이유로 든 C #으로 다시 작성하는 회사에 대한 일화적인 이야기를 많이 들었습니다. 그들은 모두 거의 같은 방식으로 끝납니다.

모든 비즈니스 로직과 도메인 지식이 이미 해결되어 기존 Delphi 코드베이스의 형태로 존재하더라도 원래 Delphi에서 프로그램을 작성하는 것보다 C #으로 프로그램을 다시 작성하는 데 두 배의 시간이 걸렸습니다. 이 기간 동안 그들은 모든 리소스가 재 작성으로 바쁘기 때문에 업데이트를 발표하지 않았고 경쟁 업체가 시장 점유율을 확보 할 수있었습니다. 그리고 그것이 끝났을 때 그것은 1.0 레벨 제품이었습니다. 글리치하고 느리고 사용하기 어렵고 종종 심각한 하위 호환성 문제가 있습니다.

해석에 개방적인 이유는 Delphi를 C # (또는 Java)보다 훨씬 더 생산적으로 만드는 주요 요인 중 하나는 언어의 모양과 느낌입니다.

초기 프로그램을 작성하는 것보다 최신 프로그램을 유지 관리하고 디버깅하는 데 훨씬 더 많은 작업, 시간 및 노력이 필요하다는 것은 상식이지만, 그 원칙은 논리적 결론에 자주 따르지 않습니다. 가장 많은 작업이 필요한 것이 프로그램을 유지하는 것이라면 코드 작성이 쉽고 빠르다는 점을 기반으로 언어를 선택하는 것은 조기 최적화입니다. 읽기 및 유지 관리 가 쉬운 언어를 사용하면 투자 수익을 높일 수 있습니다 . 그리고 코드 가독성과 관련하여 Pascal (Delphi)은 C 제품군을 능가합니다.

공식적인 연구는 아니지만 생각해 볼 가치가 있습니다.


I've never looked for such a study, but I would be surprised if one existed. Any experiment designed to measure and compare actual development costs across multiple languages in a proper scientific fashion would be incredibly expensive.

To do it properly:

  • You would need to specify a number of non-trivial projects across a range of application domains.

  • You would need to form a number project teams, each of which is composed of developers with significant experience in developing large-scale applications in one of the languages.

  • Then you would need to implement each project N times for each language ... to get a statistically significant result.

So you would need developer effort equivalent to project-size * nos-languages * nos-projects * nos-repetitions. Assuming a non-trivial project takes 1 man-year, that there are 5 projects and they are developed 5 times in each language (to give us a large enough sample size to be statistically significant), that is 25 experienced-developer-years ... say US$2 million to US$5 million ... PER LANGUAGE EXAMINED.

Those numbers are (obviously) pulled out of the air, but my point is that a proper scientific comparison of development costs for different language would be prohibitively expensive.

And even then, the study results would not address:

  • on-going maintainability / maintenance costs,
  • how the numbers scale to large projects,
  • language specific effects of team size,
  • availability, costs and benefits of development tools for respective languages,
  • ease / difficulty of forming experienced teams for each language,
  • and so on.

And the results would be out-dated in 3 to 5 years.


Peopleware (by Tom DeMarco and Timothy Lister) contains a section in chapter eight about "Coding War Games". From 1984 to 1986, more than 600 developers have participated.

In their analysis of the game results, they discovered that the programming language had little or no correlation to performance. (Only the assembly language participants got badly left behind by all the other language groups)


The US Air Force was interested and found Delphi to be significantly faster to code in. The C++ competition every year attracts speed coding teams to a competition. Delphi coders shadow this competition and almost always come in significantly faster with the required code.

After his career as head of Air Force development my former boss, Bill Roetzheim wrote the book on estimating software development costs. His choice, head and shoulders above all others was Delphi. That was version 3/4. Rational used his estimating pattern. I still use it, and nothing better has been forthcoming in all the years I have been doing it.

Clarity of design and the power of expression in code doesnt change much over versions. Most of the time you are looking at visual changes, and incremental augmentation. The core best practices from 20 years ago still apply. That is what makes Architecture possible. We know what best practices look like because at a certain scale the code has to conform to a certain set of standard requirements that dont vary much. You can almost always make it nicer to use, or have fewer stupid awkward interfaces, but data, security/filtering, and workflow systems that make business systems work still use the same design patterns from the GoF Design Patterns book. And if small devices have taught us anything, it is that intense clarity and simplicity is to be commended. It matters a whole bunch how easy your code base is to use for the purpose. All major environments can do domain design pretty well. The speed of the system and ease of development make Delphi and Node.js my two back end preferences. But capability wise C# and Java are both fine. If I was concerned about security of the environment against developers I would go for C# in some situations because it is harder for coders to violate the rules. But when I dont need those rules, ie most of the time, I prefer a more open environment that scales. When I dont much care about security I might prefer Node.js because it gets it done in a hurry. Most of the time I find it too easy to make mistakes in Node and I need full test code coverage eventually. Delphi is my first choice on balance.


"quality of developers" is hard to gauge. Java and (to a lesser extent) C# are used a lot in schools and universities to train pupils in the rudiments of programming. Many of these end up on support forums with homework questions and would be counted somehow as being programmers (and poor ones) using that language. In reality the vast majority of them never will write a single line of code after completing that mandatory introductory course, and most of the rest probably won't write in that language.

--- rant about "comparative studies" about programmer competence complete ---

As said, it's very hard if not impossible to give a cost comparison estimate for implementing something in different languages, at least as a general case to be used for all projects. Some things lend themselves better to .NET, others to Java, others again might be best done in Excel macros.

And development cost is usually only a fraction of the TCO of a system, especially if it's something like a multitier application running on application servers with databases, etc. If the customer already has a serverfarm running IIS with MS SQL Server databases as a backend, selling them a Java EE application using an Oracle backend is doing them a disservice, even if that would be the most logical choice for the application otherwise. The development cost might be lower, but the running cost for the customer would be a lot higher.

On the other end of the scale, a website for your corner grocery store who wants to start taking orders through the net for delivery in the neighbourhood shouldn't be implemented in either .NET or Java EE. The cost of the solution (especially hosting) would far outweigh the benefits. A simple thing based on for example php or rails would serve that customer far better. Hosting cost is reduced, no expensive license fees for database and application servers needs be paid, he might actually make some money using the resulting website.


Like others said, there is no studies... because nobody is interested. There is no measurable difference. Take almost any book on project management and you'll see no mention of languages barring examples, no relying on specific language features. Most time any money consuming problems over project life cycle are not coding problems, but architectural and organizational.

To put things in perspective, if you encounter serious drawback of the language and have to implement some workaround - you lose a few hours. Maintaining person might spent some more hours understanding what and why you did there A work day or two will be lost. Well, if you come to work in a wrong mood, you lose the same day. If you have problems understanding requirement or communicating with colleagues and management, you easily lose weeks and months.

참고URL : https://stackoverflow.com/questions/2940064/studies-of-relative-costs-for-development-in-different-languages

반응형