[转] 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 ...
随机推荐
- 浅谈Link-Cut Tree(LCT)
0XFF 前言&概念 Link-Cut Tree 是一种用来维护动态森林连通性的数据结构,适用于动态树问题.它采用类似树链剖分的轻重边路径剖分,把树边分为实边和虚边,并用 Splay 来维护每 ...
- bzoj 1098 [POI2007] 办公楼 biu
# 解题思路 画画图可以发现,只要是两个点之间没有相互连边,那么就必须将这两个人安排到同一个办公楼内,如图所示: 那,我们可以建立补图,就是先建一张完全图,然后把题目中给出的边都删掉,这就是一张补图, ...
- 周期性任务计划: Crontab
文中部分内容摘自骏马金龙的博客,查看可点击 1. crontab简述 crontab命令用于周期性的执行任务,想要执行这个命令,需要首先启动crond(守护进程)服务才行 crontab是配置管理cr ...
- fshc模块fsch2mcu_if理解
fshc2mcu_if中包括ahb2reg/ahb2fifo两个文件,都是协议转换文件.ahb2reg下游文件是reg files,ahb2fifo下游文件是fifo控制器.所有的配置和flag都是要 ...
- django的基本操作流程
pip install django cd Desktop/课上代码02/ #进入到创建项目的目录 django-admin startproject 项目的名称 #创建项目 __ini ...
- 【HDU 1402】A * B Problem Plus(FFT)
Problem Description Calculate A * B. Input Each line will contain two integers A and B. Process to e ...
- 关于 HTTP meta 的 IE=edge 说明
http://www.oschina.net/question/54100_17414 陌生标记标记一: < meta http-equiv = "X-UA-Compatible&qu ...
- 大数据学习——redis安装
用源码工程来编译安装 / 到官网下载最新stable版 / 解压源码并进入目录 .tar.gz -C ./redis-src/ / make 如果报错提示缺少gcc,则安装gcc : yum inst ...
- python023 Python3 标准库概览
Python3 标准库概览 操作系统接口 os模块提供了不少与操作系统相关联的函数. >>> import os >>> os.getcwd() # 返回当前的工作 ...
- Robot Framework中的未解之谜
今天在写测试用例的时候偶然发现了一个问题: 一.看脚本逻辑上没有问题,但是在引用变量的时候不能成功引用,脚本截图如下: 这个是关键字A的截图,没有参数. 此时在case中引用${phonesign}和 ...