计算机编程基础

一、三端编程
    桌面端、移动端和web端。
二、桌面dotNet代码的安全性讨论
dotNet的编译分两步:在编译时源代码编译为MSIL;运行时即时编译(Just-In-Time Compile,JIT)把MSIL编译为本机代码。在.NET源代码平台上,MSIL是.NET众多优势(如跨语言互操作)的基础。但在独立桌面应用中,它给源代码的安全带来了威胁。本文探讨产生这个问题的原因,分析可能的解决办法。
  首先,.NET是为客户机/服务器系统以及Web应用(即上面说的web端编程)而设计的。软件开发正在逐渐向Internet以及基于客户机/服务器的应用发展,许多应用不再有传统风格的界面,而是提供类似浏览器的界面。.NET也同样追随着这个趋势。
  第二,在桌面应用中,我们无法保护以受管理的MSIL形式存在的代码,如果你觉得保护知识产权(即源代码)非常重要,那么.NET不适合桌面应用开发。虽然MSIL的承诺令人心动,虽然.NET平台和CLR(Common Language Runtime)很稳定,但从安全的角度来看,对于一个独立的桌面应用来说,这一切缺乏实际意义。在.NET中,作为一个VB程序员甚至是C#程序员,你只能编写受管理、不受保护的代码。
由于存在这种限制,如果你要在桌面应用中保护代码,你必须使用非受管理的C++。保护知识产权唯一真正有效的方法是:用非受管理的C++组件封装代码,然后从.NET受管理代码中通过COM协作接口调用它。
  另外你还必须清楚的是,由于Active Server Pages.NET(ASP.NET)完全在服务器端运行,因此ASP.NET应用是安全的。实际上,这正是.NET最理想的境界——在受保护的服务器上运行代码,让代码远离任何想要研究它的人。ASP.NET把Web开发简化到了难以置信的程度,而Visual Basic.NET正是编写ASP.NET应用的优秀工具。
  掌握VB.NET需要经过艰苦的学习,而全面接受.NET更是一个缓慢的过程。从VB6迁移到VB.NET并非轻而易举,在把VB6应用移植到VB.NET之前的时间里,你仍旧需要提供对VB6应用的支持。在未来很长的时间内,许多开发者仍将使用VB6。
三、计算机语言的种类
    基本上分为:机器语言、汇编语言、面向过程的高级语言(C、fortran等)、面向对象的高级语言(C++、C#、JAVA、Objective-c等),但不论什么语言,最终都必须编译/解释为某一CPU的指令(机器语言)。
    面向对象的思想认为现实世界是由各种各样的实体(事物、对象)所组成的,每种对象都有自己的内部状态和运动规律,不同对象间的相互联系和相互作用就构成了各种不同的系统,并进而构成整个客观世界。面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的面向过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。所有面向对象编程语言都支持三个概念:封装、多态性和继承。

四、原生开发

应用程序开发分为不同的层次。原生(native)开发一般是指用原生开发语言开发,原生开发语言就是开发整个系统时使用的编程语言。对于iOS来说就是Objective C。对于Android,从最复杂到简单为:NDK(NativeDK,即原生开发) ==》JDK(JavaDK开发) ==》中间件 ==》图形界面。NDK开发的主要是C++开发,要在Linux下,因为需要把C/C++编写的代码生成能在arm上运行的.so文件,这就需要用到交叉编译环境,而交叉编译需要在linux系统下才能完成。NDK开发的好处:1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C++代码编写的。3. 便于移植,用C/C++写得库可以方便在其他的嵌入式平台上再次使用。JDK 开发主要 java 开发。中间件开发主要:PhoneGap、MonoTouch、Rexsee EMS、数字天堂、烽火等等。

原文地址:https://www.cnblogs.com/hjyxbfz/p/3098628.html