[转] When to use what language and why
When to use what language and why
[转] http://www.cplusplus.com/articles/42E1wA7f/





Well I'd like to straighten one thing out. There is no best language. There is no best paradigm. There is no best algorithm, method, optimization, technique, ANY OF IT. All good programmers know this, and all real computer scientists know that a language is just a tool in the science of computation. If some one builds a better screw driver, why not use it? Well perhaps this screw driver is only better at getting the job done faster, and not getting it done more efficiently. Or maybe it's great at both of those but the screws are not tightly in the wall because of it. This is comparable to the differences in all computer languages.
So one coder might ask "When should I use "XYZ"?" and when answered they might ask "why?"
I'm here to answer these questions.
When should I use Assembly: You should use assembly when you need the lowest level access to the hardware available. Or when you need to hand optimize things like algorithms and the like. That's not to say you can't use assembly for a desktop application, but it is entirely impractical. As a rule of thumb, use assembly when you need more raw control then you do quickly written and readable code.
When should I use C/C++: Well first of all, c and c++ are both lower level languages, not nearly as low as Assembly but low none the less. Now they are also non garbage collected languages, so you will have to deal with debugging memory leaks and the like, but that presumable flaw is one of the greatest strengths of languages like these. While you may spend more time writing and fixing code then you do optimizing the code, you have the power to optimize it a hell of a lot better than garbage collected code. So anyone who tells you "use java/C#/Scala/etc for you're Kernel/game engine/generic time and resource critical application" because they think you'll get it done faster, and thus make more money because of it, knows nothing about computer science nor economics. Build x number of shitty toys in a month and you're left with a pile of shit. build 1 amazing toy in a month and every one will want your toy...cause come on, who wants to play with a pile of shit?
Now you may think, if thats so why should i ever use languages like java/c#/scala/F#/etc? well the truth is some times you do want to implement faster than you want something to be efficient, and in some cases some of these languages do a better job at both.
So when should I use java: If this wasnt an impartial article I'd say never and leave it at that. BUT this is supposed to be neutral so Java is great for server based applications, as well as client based web apps. It's fast and great with databases, while at the same time having some over head. My biggest problem with java is it's not that great of a language, in fact it's pretty bad. But thats what people get for trying to turn a language designed to teach students computer science and OOP into an industry standard. It was never meant to be what it is today.
What about c#: Use C# when ever you'd think to use java. The way I see it is C# is just like java...except it works.
how bout functional paradigm languages like F#: you want to use languages that are functional when you need more platform independence. Functional languages make it easier to process your algorithm, method, function, etc independent of thread of CPU. It's great for multiple platforms, and multiple threading. This is also why scala excels at these things.
So all things considered you need to remember one thing when programming. It's not about finding the best tool out there and sticking to it like it's dogma. It's really about finding the best technique to learning how use these tools so you can have a full toolbox when it comes time to build your software.
Edit: I was late for class and forgot to add a "will add more later" and remove the above section.
[转] When to use what language and why的更多相关文章
- <%@ page contentType="text/html; charset=utf-8" language="java"%>每一个字符的含义
contentType="text/html:网页类型htmlcharset=utf-8"网页编码类型language="java"网页编程语言<% @ ...
- UML(Unified Modeling Language)统一建模语言
什么是模型 模型是对现实的简化 模型是提供系统的蓝图,模型可是包括详细计划.也可是是从更高程度考虑系统的总体计划,每个系统可以从不同的方面用不通过的模型来描述.因而每个模型都是在语义上闭合的抽象系统. ...
- iOS Swift-元组tuples(The Swift Programming Language)
iOS Swift-元组tuples(The Swift Programming Language) 什么是元组? 元组(tuples)是把多个值组合成一个复合值,元组内的值可以使任意类型,并不要求是 ...
- iOS Swift-控制流(The Swift Programming Language)
iOS Swift-控制流(The Swift Programming Language) for-in 在Swift中for循环我们可以省略传统oc笨拙的条件和循环变量的括号,但是语句体的大括号使我 ...
- iOS Swift-简单值(The Swift Programming Language)
iOS Swift-简单值(The Swift Programming Language) 常量的声明:let 在不指定类型的情况下声明的类型和所初始化的类型相同. //没有指定类型,但是初始化的值为 ...
- Traditional Language Model
Traditional Language Model通常用于回答下述问题: How likely is a string of English words good English ? \(p_{LM ...
- language level in Intellij IDEA
The Language level setting sets which features the code assistance in the editor should support. For ...
- Java Programming Language Enhancements
引用:Java Programming Language Enhancements Java Programming Language Enhancements Enhancements in Jav ...
- SharePoint Site "Language Settings"功能与CSOM的对应
博客地址:http://blog.csdn.net/FoxDave SharePoint网站中的语言设置:"Language Settings",可以用CSOM通过Site的一些 ...
- Why sql is called structured query language?1 - 12
SQL has much to do with a researcher at IBM, Edgar F. (Ted) Codd, an Oxford-trained mathematician, w ...
随机推荐
- 文件默认权限umask掩码
umask命令 作用:用于显示.设置文件的缺省权限 格式:umask [-S] -S表示以rwx形式显示新建文件缺省权限 系统的默认掩码是0022 文件创建时的默认权限 = 0666 - umas ...
- redis:哨兵集群配置
最少配置1主2从3哨兵 一.引言 上一篇文章我们详细的讲解了Redis的主从集群模式,其实这个集群模式配置很简单,只需要在Slave的节点上进行配置,Master主节点的配置不需要做任何更改,但是有一 ...
- Ubuntu配置NFS服务器
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客户端应用可 ...
- Django框架基础知识14-类视图
MTV view视图 wsgi函数 def index(request): .... return HttpResponse() 特定的HTTP方法.get,post可以定义单独的方法 继承,多继承, ...
- 构造MaxTree
链接:https://www.nowcoder.com/questionTerminal/a502c7c3c65e41fdaf65eec9e0654dcb 来源:牛客网 [编程题]构造MaxTree ...
- 发布tomcate时报A configuration error occurred during startup.please verify the preference field with the prompat:null
发布tomcate时报A configuration error occurred during startup.please verify the preference field with the ...
- .NET Core 文件的上传与下载
1.前言 文件导入导出是简单且常用的功能,以下示例实现了文件上传与下载的几种方法,如有不妥的地方,欢迎指正.小白一枚,在往目标前进. 2.1.文件上传 -- 纯文件 <form ac ...
- jmeter给cookie设置sessionId避免其他脚本多次登录
1.相关知识: http头部可以设置:浏览器显示内容类型,如content-type:text/html http头部可以存放:浏览器的cookie信息——cookie是对用户身份进行判断的内容 ht ...
- HTTP API 自动化测试从手工测试到平台的演变
不管是 Web 系统,还是移动 APP,前后端逻辑的分离设计已经是常态化,相互之间通过 API 调用进行数据交互.在基于 API 约定的开发模式下,如何加速请求 / 响应的 API 测试,让研发人员及 ...
- 以太坊和IPFS如何存储数据
如何将JSON文件存储在IPFS上,并使用Oraclize访问智能合约中的数据呢? 以太坊是一个成熟的区块链,使开发人员能够创建智能合约,在区块链上执行的程序可以由交易触发.人们经常将区块链称为数据库 ...