当前位置: 首页 > 编程日记 > 正文

个人技术生涯的感悟(2)

很多时候,一门门槛很低的编程语言对于初学者的帮助是非常大的,从而决定这个人的技术路线的选择。

在经历过大一下学期对C,和C++的迷茫之后,在大二上学期,学校在搞一个网页设计比赛,正好和两个朋友一起参赛。开始接触网页设计,学习html语言。

刚开始接触html的时候,觉得这一门语言真神奇啊,写几行代码,直接用浏览器打开,就可以看到效果了。对于学了一个学期的C和C++都没有办法脱离命令行程序的我,看到是如此的兴奋,那一个月,无论上什么课,都是那一本html教程在哪里看,白天学语法和标签,晚上做demo。由于设计到动态的脚本,又接触了asp这一门语言,有了C的基础,学起来也非常快,倒是html反而学了有一段时间,主要是这一门语言并不是真正意义上的编程语言,只是用类似xml的标签来展现界面,而解释html脚本的正是浏览器。

根据标签来生成界面技术,在目前各个平台都有踪影,例如android里面通过xml文件进行页面的布局,在ios里面的通过加载xib文件进行页面展现。在VB里面,貌似用的是属性文件格式例如:A=B,目前还有一些通过json格式来保存页面信息。这些设计都是基于元数据编程,在《程序员修炼之道》里面有提到过,这个技术非常重要,用得好完全可以提高系统设计能力。

当然了,以上只是现在感悟,那个时候那里只是知道html相当神奇,能够很快的做出原型界面,再加上asp动态语言的帮助,在很短的时间内,也就是两周,做出一个选课系统,那个时候大受鼓舞,能够在短短两周之内,就做出一个可以用的网站来,已经完全出乎无意料。不过现在想想,主要还是因为有C语言做基础,大多数面向过程的语言都是命令式的,无非就是变量类型,条件语句,循环语句,数据结构 ,以及表达式。

最终,设计了一个学校的主页,可以注册和登陆,就这么简单的功能,竟然获得了校三等奖(由此可见,我们学校够垃圾的)

技术的选择

软件 vs “硬件”

大二上学期主要学习了asp和javascript,html这三门语言。使用场景也比较简单,不过这段时间也面临一个选择。这段时间很多培训机构到我们学校搞宣传,思科比较多,说的是CCNA,CCNP考试。那段时间正好也面临选择,到时做软件还是做硬件,那个时候对网络管理员的理解就是做硬件。后来想想,自己根本没有钱去买他们的产品,只是学理论课,不能实践,也不能做出点牛逼的东西,就放弃了。现在想想,做运维挺苦逼的,手机不离手啊,经常通宵搞发布。

而且我现在也不建议大学就去考一些CCNA相关的认证,计算机这个行业,最重要的是实践,大学生条件有限,不太有机会维护网络设备,要知道那些网络设备都是比较贵的,你也不可能自己买一个组网实践,你没有那么多的钱,况且思科相关的认证都和其产品绑定的非常死,现在除了电信相关以及大型互联网公司,其他一般很少会使用思科的产品。不过网络协议相关的规范和设计还是可以深入学习的,这一些基础理论保鲜度还是很长的。

C# vs java

做“硬件” 还是 “软件” 如果说是自己思考来决定的,那么 C# 和 java的选择就完全是戏剧性的。当时一个哥们说,asp已经过时了,现在流行java和C#, 我们要选一门语言学习。当时也正好发现asp用的很熟练了,觉的说的有道理,就比较犹豫到底学C# 还是 java,其实说白了,到底是跟着sun  还是跟着微软。当时他说,师兄都在搞C#,我们也搞好了,跟着微软没有错。而另外一个高中就搞编程的哥们说,别跟着微软,这家伙太垄断了,而且微软sdk里面常量太多了,都是微软自己定义的,而且好多他都帮你实现了,你就是调用一下,不利于提高编码能力。

以当时的理解能力,当时记住的就两点:

1 微软太垄断

2 学微软提高不了编程能力

当时对编程了解还不多,那个时候年轻,比较追求自由,也比较愤,讨厌垄断,接受不了,就选择了java。选择真有戏剧性啊。

当时说的第一个点,应该说微软比较封闭,很多都是基于windows之上,都是商业产品,产品基本上也都是闭源的,从这个角度来看,我是接受不了的,也是喜欢自由导致的,就像图形社区对老赵的采访所说的——“理论上说,在微软你不可以读开源的代码。微软害怕你在看了开源的项目之后,会不知不觉地在工作中应用到开源东西,产生法律纠纷。这点真的很可惜” 。

至于第二点,编程语言首要的就是提高效率以及解决问题,这个是最基本的要求,微软在这一方面座的比较好。至于编程能力,是和语言没有关系的。编程能力的提升主要是 多看,多写,多思考。

多看:尝试着看自己经常使用的产品的源代码,了解其设计思想以及代码编写的技巧。这个是最便宜也是最简单的方法,但是很实用。

多写:如果程序员写的代码少,即使看的再多,也没有效果。写代码能够把“偷来”思想去实践,然后发现是否用在合适的地方。

多思考:如果一直写代码,机械套用一些模式,不会由成长。成长最重要的反思,我代码写的好嘛,能够满足需求吗,通用吗,重复率高吗,是否还能有更好的方法?一个coder高手,一定是一个对审美要求极高的人的。如果发现自己的代码重复率太高,自己就会觉得不舒服,看上去非常啥。同一段代码,你一个月后,一年后,三年后再去看,肯定有不同的感觉,会发现很多问题,如果发现不了问题,说明要么代码很完美,要么自身没有任何长进。

相反,java的发展壮大离不开开源社区,全世界有无数的工程师在贡献自己的代码。如果提高编程能力,最好的一个途径都是阅读开源的代码,看看别人代码是怎么设计,有哪一些思想值得借鉴。如果一个java工程师,没有阅读过任何一款开源产品的源代码,那只能说他是一个不合格java的工程师。有这么好的条件,为啥不利用了。

转载于:https://www.cnblogs.com/aigongsi/archive/2012/11/30/2795485.html

相关文章:

HtmlAgilityPack 处理通配的contains

//选择不包含class属性的节点 var result node.SelectNodes(".//span[not(class)]"); //选择不包含class和id属性的节点 var result node.SelectNodes(".//span[not(class) and not(id)]"); //选择不包含class"expire"的span var result node…

游戏风格化角色创建入门指南视频教程

游戏风格化角色创建入门指南视频教程 时间 33小时 包括项目文件 1920X1080 MP4 语言:英语中文字幕(根据原英文字幕机译更准确)原英文字幕 游戏中的风格化角色创建入门指南 百度一下 云桥网络 平台huo取 教程! 信息。 教程33小…

Java学习总结:6

String类(接上篇) 字符串的拆分 public class Test1_1_2_1 {public static void main(String args[]){String str "hello world";String result[] str.split(" "); //以空格作为间隔for(int x0;x<result.length;x){System.out.print(result[x]"…

java面试常见问题之Hibernate总结

1 Hibernate的检索方式 导航对象图检索&#xff08;根据已经加载的对象&#xff0c;导航到其他对象。&#xff09; OID检索&#xff08;按照对象的OID来检索对象。&#xff09; HQL检索&#xff08;使用面向对象的HQL查询语言。&#xff09; QBC检索&#xff08;使…

HDU 4267 线段树 离散点区间更新, 自叶子节点至根单点查询

题意&#xff1a; n个数字 下面n个数字表示数列 2个操作 1 [u, v] k add [u,v ]区间 &#xff08;u点要计算&#xff09;每隔k个位置&#xff0c;该数字add 2 pos 询问 pos下标的值&#xff08;下标从1开始&#xff09; 思路&#xff1a; 因为k很小&#xff0c; 可以直接存 k…

Java学习总结:7

static关键字 一个类的主要组成就是属性和方法(分为构造方法和普通方法两种)&#xff0c;而每一个对象都分别拥有各自的属性内容(不同对象的属性保存在不同的堆内存中)&#xff0c;如果类中的某个属性希望定义为公共属性(即所有对象都可以使用的属性)&#xff0c;则可以在声明…

mybatis 使用resultMap实现数据库的操作

resultType:直接表示返回类型 resultMap&#xff1a;对外部resultMap的引用 二者不能同时使用 创建一个实体类Role和User public class Role {private Integer id;private String roleCode;private String roleName;//省略set、get方法 创建User类&#xff08;在User中有roleId…

【3DMax教程】三维产品可视化视频教程 3d Products Visualization Course

【3DMax教程】三维产品可视化视频教程 3d Products Visualization Course 三维产品可视化课程 教程大小&#xff1a;5.38G 1280X720 含课程素材文件 你会学到什么 项目简介及其必须包含的内容 蓝图以及如何获得和使用 逐步建模流程 如何制作UV和纹理 用UV投射材料 生成…

Spring MVC 和WebFlux 区别

本节主要对比了WebMvc 和 WebFlux两个Web框架,Spring已经为我们开发做了很大努力了,所以在合适的场景下这种异步框架还是非常可行的。但是还要考虑后期其它异步框架是否能够完善,全链路异步才能发挥异步最大的优势。

Cygwin鸡毛蒜皮

2019独角兽企业重金招聘Python工程师标准>>> Windows命令乱码: cygwin控制台mintty的编码缺省是UTF-8, 右键调整mintty选项[text] 改编码为GBK UNIX路径和Windows路径互转: 使用cygpath工具. 如: #cd cygpath C:\\Windows 安装包管理器apt-cyg: 安装: # svn --fo…

Using unique option prefix myisam-recover instead of myisam-recover-option

[转载]关于mysql error.log报"Using unique option prefix myisam-recover instead of myisam-recover-options ..."转载&#xff1a;http://blog.csdn.net/cloud_xy/article/details/21756601启动时日志中有这个警告的&#xff1a;[Warning] Using unique option pr…

Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020

Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020 流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频:aac&#xff0c;48000 Hz 语言:英语 中文字幕&#xff08;机译&#xff09;原英文字幕 |大小:33.0 GB | 145节课程| (36h 18m) 你会学到什么 云…

Java学习总结:8

链表 class Node2{ //定义一个节点private String data;private Node2 next; //要保存的下一个节点public Node2(String data){ //每一个Node2对象都必须保存相应的数据this.datadata;}public void setNext(Node2 next){this.nextnext;}public Node2 getNext(){return this.…

(原创)c#学习笔记10--定义类成员03--接口的实现01--显示实现接口成员

10.3 接口的实现 在继续前&#xff0c;先讨论一下如何定义和实现接口。第9章介绍了接口定义的方式与类相似&#xff0c;使用的代码如下&#xff1a; interface IMyInterface {// Interface members. } 接口成员的定义与类成员的定义相似&#xff0c;但有几个重要的区别&#…

JVM架构解析

本文阐述了JVM的构成和组件&#xff0c;配图清晰易懂&#xff0c;是学习Java开发者的入门必读文章。 每个Java开发人员都知道字节码经由JRE&#xff08;Java运行时环境&#xff09;执行。但他们或许不知道JRE其实是由Java虚拟机&#xff08;JVM&#xff09;实现&#xff0c;JV…

cmd实用命令

1.netstat 查看电脑端口状况 实际应用举例&#xff1a;查看某软件坚监听的电脑端口。 在任务管理器中选择列...&#xff0c;打开PID的显示。在这里查看某个应用程序的线程ID是多少。例如QQ&#xff1a;4904. 运行&#xff0c;cmd&#xff0c;输入netstat -ano&#xff0c;显示当…

嵌入式BootLoader技术内幕(三)

四、 关于串口终端 在 boot loader 程序的设计与实现中&#xff0c;没有什么能够比从串口终端正确地收到打印信息能更令人激动了。此外&#xff0c;向串口终端打印信息也是一个非常重要而又有效的调试手段。但是&#xff0c;我们经常会碰到串口终端显示乱码或根本没有显示的问题…

Maya 2020面部绑定动画学习视频教程 Facial Rigging 101 – Maya 2020

Maya 2020面部绑定动画学习视频教程 Facial Rigging 101 – Maya 2020 时长:16h 55m |视频:. MP4 1280x720&#xff0c;30 fps(r) |音频:AAC&#xff0c;44100 Hz&#xff0c;2ch |大小:15.5 GB 共62小节课程 流派:电子学习|语言:英语中文字幕&#xff08;机译&#xff09;含…

Java学习总结:9

继承 继承性是面向对象的第二大主要特征&#xff0c;而继承性要解决的就是代码重用的问题&#xff0c;利用继承性可以从已有的类继续派生出新的子类&#xff0c;也可以利用子类扩展出更多的操作功能。 继承的实现 继承的格式 class 子类 extends 父类 {}子类实际上是将父类…

转 小辉_Ray CORS(跨域资源共享)

前言&#xff1a;上一篇文章在写如何使用JSONP实现跨域请求的时候&#xff0c;偶然间提到CORS&#xff0c;即Cross-Origin Resource Sharing&#xff08;跨域资源共享&#xff09;。虽然前些天也看了一下CORS相关的文章&#xff0c;但是今天兴趣一来还是亲自地写篇博客来研究一…

使用dd命令复制ASM磁盘的spfile

通过下面sql查询参数文件在ASM磁盘中的AU分布SELECT x1.file_number,x1.name,x2.GROUP_KFFXP,x2.DISK_KFFXP,x2.AU_KFFXP,x3.pathFROM (SELECT *FROM (SELECT t1.GROUP_NUMBER, t1.FILE_NUMBER, t2.NAME, rownum AS rnFROM v$asm_file t1LEFT JOIN v$asm_alias t2ON t1.FILE_NU…

[转载]IPMSG(飞鸽传书)协议翻译

/***********************************************************本人(ypxing)根据下面的协议&#xff0c;C语言写的ipmsg(聊天&#xff0c;文件/文件夹传输)*请参见&#xff1a;http://blog.chinaunix.net/u1/35100/showart_689330.html**************************************…

SketchUp Pro 2021基础入门学习视频教程

SketchUp Pro 2021基础入门学习视频教程 1280X720 MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#xff0c;2 Ch 流派:电子学习|语言:英语中文字幕&#xff08;根据原英文字幕机译更准确&#xff09; |时长:74节课(7h 31m) |大小:4.9 GB 含课程工程文件…

Java学习总结:10

覆写 在子类定义属性或方法时&#xff0c;有可能出现定义的属性或方法与父类同名的情况&#xff0c;这样的操作就称为覆写。 方法的覆写 当子类定义了和父类的方法名称、返回值类型、参数类型及个数完全相同的方法时&#xff0c;就称为方法的覆写。 class A1{public void f…

ubuntu中启用ssh服务

ssh程序分为有客户端程序openssh-client和服务端程序openssh-server。如果需要ssh登陆到别的电脑&#xff0c;需要安装openssh-client&#xff0c;该程序ubuntu是默认安装的。而如果需要从远程连接到本机&#xff0c;则需要安装openssh-server&#xff0c;该程序需要自己安装。…

JVM 常见异常及内存诊断

栈内存溢出 栈内存大小设置&#xff1a;-Xss size 默认除了window以外的所有操作系统默认情况大小为 1MB&#xff0c;window 的默认大小依赖于虚拟机内存。 栈帧过多导致栈内存溢出 下述示例代码&#xff0c;由于递归深度没有限制且没有设置出口&#xff0c;每次方法的调用都…

解决文字无法缩小的问题

在css设置文字大小的时候&#xff0c;到12px 的时候你在怎么缩小他&#xff0c;他的大小就是不变font-size&#xff1a;百分比来控制也不起作用-webkit-transform: scale(0.8); -o-transform: scale(1); display: inline-block; 转载于:https://www.cnblogs.com/xinlinux/p/408…

asp.net图片浏览器效果

技术来源于同学会实践 前台设计 <% Page Language"C#" AutoEventWireup"true" CodeFile"txh.aspx.cs" Inherits"txh" %> <!DOCTYPE html> <html xmlns"http://www.w3.org/1999/xhtml"> <head runat&qu…

Blender材质和着色基础视频教程 CGCookie – Fundamentals of Blender Materials and Shading

Blender材质和着色基础视频教程 CGCookie – Fundamentals of Blender Materials and Shading Blender材质和着色基础视频教程 CGCookie – Fundamentals of Blender Materials and Shading CGCookie–Blender材质和着色基础 教程大小解压后&#xff1a;3.1G 共6大章 45小节课…

Java学习总结:11(final关键字)

final关键字 在Java中final称为终结器&#xff0c;在Java中可以使用final定义类、方法和属性。 一.使用final定义的类不能再有子类&#xff0c;即&#xff1a;任何类都不能继承以final声明的父类。 在设计类的时候&#xff0c;如果这个类不需要有子类&#xff0c;类的细节不…