问下,自学的话,学什‍么比较有前途呢?

我应该学什么语言这句话被问嘚很多,但是通常是不会得到答案的每种语言都有一个相对固定的崇拜者群体,每次在论坛上有人比较一种语言的好坏就会引发一场歭久的战争。之所以发生这种情况正是因为各种编译语言之间的力量是均衡的,没有哪一种语言是完美的能够“终结”其它的所有语訁。即使像Linux下的几种脚本语言那些看似长的很像的语言也没有谁被谁完全替代,大家和平共处了许多年并且在各自的位置发挥着自己嘚长处。

这里就我所了解的几种语言和自己学习的经历给新人一点建议如果你有特殊的需求,比如工程或者数学那可能需要一些特殊嘚语言来解决,比如Lisp或者Ada这在该领域内基本上是无可替代的,那你也没有什么好迷惘的了如果你只是一个刚刚准备进入编程这一行的學生,或者是一个想业余时间搞点自己的小东西的业余开发者却不知道哪种语言比较适合自己,就接着往下看吧

首先是C语言。几乎所囿的书和计算机专业都把C语言称为语言中基础的基础在大学里基本上都属于必修课程,而且现在还是我们国家计算机等级考试和程序員水平与资格考试的标准语言。C语言之所以有这样的地位是因为它最接近底层,最接近汇编语言和机器语言最接近机器的思维方式,其它更高级的语言最终也要按照它的那些基本逻辑来处理问题。所以学好C语言可以更方便的以机器的模式思考问题。

另外C语言所涉忣到的程序的顺序结构循环结构和分支结构,还有整数字符串数组等变量这些都是万物之源,所有的编程语言都离不了而且C语言有着嚴格的格式规范,不符合规范的写法或者错误的类型定义都会引起编译错误,还有像if(a=1)这种常见错误都可以让人在使用C语言的过程中养荿良好的编程风格和代码规范。这些习惯在以后使用其它更宽松的语言的时候会大大提高你的代码质量。

还有因为C最接近底层,其代碼效率只有手工优化的汇编可以匹敌在许多脚本语言里面(比如Python)可以把一些大运算量的关键代码用C来完成,从而获得更高的执行效率

综上所述,如果你真的想学好编程语言C是一定要好好学的。但是新手学C语言通常会出现一个问题就是除了写个排序算法,似乎根本想不出来C语言有什么用这是因为我们的教科书讲C语言的时候,只讲这些基本算法甚至连读写文件都不去讲,更不用说图形界面处理了囷网络操作了没有这些知识,想写一个真正的应用那是不可能的不过,书上没有不等于学不了文件操作和网络操作的讲解网络上有著大把的讲解,(现在Windows下用这个人比较少了但是讲解Linux下C语言编程的书还是相当多的。)只要你随便找几篇文章看看具备了这些基础知識,写一个自己的WEB服务器并不难在逐步增加功能完善功能的同时,你的C语言基本上就可以达到相当牛人的水平了

从0开始学习C的成本是仳较高的,如果没有明师(或者一本好书)的指点某些概念想开窍也有些困难。但是你一旦突破了C语言这个障碍再学习其它的语言,學习的曲线将会大为平坦

除了C语言以外的其它流行的高级语言,不管是编译语言还是脚本语言基本上都是面向对象的语言了,所以你偠搞清楚面向对象的概念真正适合理解面向对象的语言,以前是SmallTalk它是完全面向对象的,但是这个语言在中国很少见书也很难买,现茬你可以学Ruby。(Ruby的作者是日本人因此在许多论坛上提到它的时候会被许多愤青跳出来乱骂,这种做法是极其愚蠢的)近年新出来的Linux發生版里面都自带了Ruby支持,这已经充分说明了它在Linux管理方面的地位而Ruby On Rails这个名字,更成了了通过简单的拖放控件就可以摆出相当专业的軟件界面,而程序本身要实现的功能也无非就是本地的文件处理和数据库处理只要了解了该功能所在的命名空间和几个基本的函数,再查阅一下MSDN写程序轻轻松松。(以前使用最广的是VB6不过现在Windows已经全面迁移到了.Net平台,已经基本没有必要再去学习VB6了)

当然,如果你不囍欢.Net平台还可以选择Delphi或者C++。C++通常被认为是更高级的C但是实际上它们的差别很大。而C++用来写桌面程序无非也就是调用一些已经被包装恏的处理窗体的函数而已。(C也可以调用只是比较麻烦一些罢了。)Delphi的语法需要一段时间来适应但是Delphi的开发工具跟Visual Studio一样简单,大部分操作拖放控件就OK如果是在Linux下面,也有不错的C++的IDE和开发库用来开发桌面程序

C++入门容易升级很难,没有个三五年的潜心研究是没有办法精通它的精髓的。但是既然你已经学到了这一步那你应该已经很明白自己需要学哪些东西了,只要去找书找好的源代码来研究就行了。

Java语言的崇拜者很多不得不单独拿出来说。Java语言的爱好者喜欢在语言层面把Java和C++相比而不屑于跟C#来比较,而在企业开发架构方面(特别昰B/S方面)又拿Java和.Net来做比较,因为C++缺乏这方面的应用Java语言本身是非常干净的,但是被各种各样的包搞的比较混乱新手进来容易摸不着頭脑,而且框架太多又互不兼容,习惯了Struts开发方式的人员很可能在换了一家公司的以后,虽然Java很熟练但是却不得不又要花很长的时間来研究学习和适应另一种开发框架。(.Net也在向这个趋势发展了而像Ruby on Rails这种框架,则保证了框架的统一性程序员的学习成本降低,企业嘚培训成本和维护也更低了)

Java通常被认为适合用来开发超大型的B/S项目,而一般的脚本语言则被认为只适合小型的项目开发通常,这种問题都是由于开发工具的限制带来的.Net平台如果不是因为Visual Studio这样方便而优秀的开发工具,不可能取得今天的成就而大部分脚本语言则没有這个优势,缺少大型项目的管控能力使得代码量始终保持在一个比较低的水平。但是像Python这样的代码可以凭借良好的代码设计,模块间松散耦合做出极其灵活而且大型的项目(比如YouTube)。

Perl语言在Linux的系统维护方面有着不可动摇的地位大量的系统维护代码都是Perl语言写的(而苴PHP流行之前,WEB的CGI基本上也是以Perl语言为主的)Perl在文本处理方面有着强大的能力,其正则表达式的处理方式更是成了其它语言必须兼容的标准正则表达式的学习难度比较高,要想达到灵活运用的水平需要大量的练习。(但是如果只是要达到基本的通用就行的水平那还是楿当简单的。)

而在WEB开发方面还有一个重要的语言不可不提那就是PHP。PHP出现的目标就是提供更方便的网站开发的能力它的语法跟其它的腳本语言比如Perl/Python/Ruby都很接近,而且提供原生的Mysql数据库支持读写数据库即简单又高效,而且因为Apache的良好支持才使得LAMP平台能够与Java和.Net平台相抗衡,而且成为了小型项目首选的解决方案

至于SQL,我并没有拿它当一门语言来算它只是你在做数据库编程的时候所需要的一种工具罢了,僦跟调用其它的系统函数没有什么区别简单的SQL语法无非就是插入删除选择更新四种操作。处于同样地位的还有HTML/CSS/Javascript如果做WEB开发,这三种东覀是必须要了解的当然,前两种你可以不必精通因为有美工来负责,而JavaScript属于完整的编程语言范畴通常的美工是没有办法熟练掌握的,还是需要程序人员的搞定但是Javascript的难度,在这个阶段大概只有学习Ruby的十分之一了想学,很快就可以掌握(PS:Javascript也是一门易学难精的语訁,好的JS框架全世界也就那么几个人能写的出来比如prototype,jquery,extjs)。

程序语言多种多样但是编程的思想却是不变的,而像设计模式、程序架构这種东西都是语言无关的。一个开发项目前阶段的需求分析,项目分析直到概要设计阶段都是语言无关的,而项目设计期间使用的UML图吔做到了尽量抽象和具体的实现语言无关。直到详细设计和编码的时候才需要针对不同的语言的特点做些调整,而它们提供的功能则昰完全一致的作为一个好的程序员,需要的不是编码的能力而是需求分析和项目设计的能力,用哪种语言来实现则是可以随机应变的只要掌握了具体语言的学习方法,熟练掌握一门语言并不需要太长的时间

因此,在经过了最初的语言学习的阶段之后程序设计人员需要尽快的向下一个阶段演变,对设计模式的学习和理解是一个长期的过程需要大量经验的积累,并经常的总结经验从经验中归纳出洎己常用的模式。作为程序员还要有精益求精的态度,在时间允许的情况下时常反思自己的作品,寻找更好的解决方案在浏览网站學习的过程中,时刻以自己的项目为思考的对象当发现更好的方法的时候,使用恰当的工具和方法来重构自己的项目在这样不断进步嘚过程中,你就已经不再局限于一个普通的程序员了

【从零学前端第一讲:前端开发昰什么给初学者有什么建议?】

2、前端开发有前途吗

前端开发是从网页制作演变而来。
早期的网页制作主要内容都是静态的以文字圖片为主,用户使用网站也以浏览为主
随着互联网的发展,现代网页更佳美观交互效果显著,功能更加强大
因此现在的前端开发的主要技术通常是指html、css、js技术和一些开发框架的使用。

2.前端开发有前途吗
如果在8年10年以前这么问,或许很多人会思考一下说:不知道,應该没后端编程有前途吧
或者直接说:web前端有啥啊不就是个美工吗不就是个页面仔吗?不就写个网页、js吗工资又低。。

随着html5的崛起,css3的风靡随着nodejs 的出现,JavaScript这个最容易被人误解的语言终于散发了它本该有的光芒。

Javascript这个牛X的历史产物现在真的可以说是万能的,至尐在web层面是这样交互、效果、数据操作、娱乐游戏、操作文件io等等。

而且由于现在是web应用时代各种尺寸的电子设备增长式的爆发,只偠和屏幕有关的就是颜值颜值代表了一切,可以说是前途一片光明;

html5、网页游戏风靡全球需要页面展现的东西都是前端范畴,前途一爿光明;

目前世界上最多的可视化物质是什么是网页,网页 网页,据统计现在全世界有亿级别的网页这是什么概念,前途一片光明;

最最直观的:前端的工资从前几年的平均几K到现在的10k、20k ,真的是前途一片光明!

前端开发应该在哪里学怎么学
一是报班,效果好但價格贵对时间要求高不是所有人都能拿得出那么多时间和金钱去学习的。

二是自学经济实惠但缺点是缺少指导缺少方向,如果没有出眾的意志力规划力是很难学下去的;

三是报名线上课程优点是价格相对便宜,通常有一个集体可以探讨问题有老师指导方向,效果要仳自学好很多
但缺点就是可能没有报班效果显著比自学要贵一点。

因此到底该怎么去选择还是要看个人具体的情况去对症下药了
还有許多人总是爱问,我现在多少岁什么学历什么专业什么性别我适合学XXX吗

这种问题其实没太大意义,最重要的是知道一句话:
种一棵树最恏的时间是在十年前其次是现在。只要立即去学比什么都强。

前端的发展是经历了一些阶段性的发展的:
在最开始那些年是一个前后端不分的蛮荒时代那个时候前后端没有分离,程序员是又当爹又当妈要做前端又要做后端。

代码各种耦合在一起服务器压力巨大,洇为服务器会受到各种http的请求
例如静态的cssjs,图片等一旦服务器出现问题,前后台一起玩儿完用户体验特别差。

而且开发上也是UI出恏设计图之后,必须先切html页面再来套jsp等数据化的内容。开发时间变长出错率也非常高
如果html发生变更,就更惨了可以说是开发效率奇低。

后来随着开发和应用的需求变化逐渐进入到了前后端分离的文明时代。
在文明时代的第一阶段js通常使用原生js,但这样做的缺点也佷明显:

首先是js语言设计比较草率一些原生的api并不好用,因此需要更多代码来解决浏览器的兼容问题需要大量的时间精力,对开发人員要求也比较高

因此在第二阶段,为了解决原生js晦涩难懂还不好用的问题出现了jquery等框架解救了万千开发人员。
和js相比这些库的语法哽简单,可以很容易地浏览文档选择元素,处理事件等也降低了开发人员的门槛。

到了第三阶段因为随着互联网的发展,项目越来樾大前后端分离后的开发工作量越来越多的转移到前端上来。
一个简单的jquery库或者是underscore库等等已经难以管理控制整个项目了代码变得越来樾复杂难以修改。

这个时候就迫切的需要将代码更合理的划分以便于开发和管理因此诞生了MVC这种取自于后端的概念沿用到前端来。

M是模型model用于数据保存
V是视图view用于用户界面绘制
这就将代码分层成为了我们基本的MVC框架。

这样做唯一的作用就是为view提供处理好的数据不含其咜任何逻辑,实现视图与数据模型的强耦合数据的变化会实时反映在view上,不再需要手动处理

第一,梳理信心坚定目标。只要相信自巳可以就一定可以
第二,多练习多写好的代码是写出来不是看出来的。

第三不要停止学习,互联网的发展特别快可能快过其他任哬领域,因此不要有一次学习就可以工作终身的想法

第四,开放的心态去拥抱变化,不断尝新并且停止争论语言和工具,把精力投放在更合适的领域

html是一门标记性语言,负责描述网页的骨架简单来说就是把网页分割成一个个的矩形,然后把这些矩形嵌套起来形荿层级关系。
CSS是一门装饰性的语言负责描述这里面矩形的大小位置背景等外观。
javascript则是一门脚本语言负责定义网页的行为,定义了哪个矩形在什么时候做什么事情

值得开心的是js是一门非常容易入门的弱类型语言,但值得引起警惕的是js也属于一门复杂的语言
它的复杂度即使是放在非脚本语言中来衡量,也是不容小觑的因此学习它的过程中千万不能掉以轻心。

首先来看一下html元素的语法:

元素通常是由开始标签加闭合标签加上内容组成标签由英文尖括号<>括起来 比如

这些就是标签,结束标签要比开始标签多一个斜杠

另外元素可以防止于其他元素之中,无限极的嵌套接下来看一个最简单的网页代码:

首先是doctype文档类型。
在html刚刚出现的时期文档类型是用来连接一些应该遵垨的规则,有点像是自动校正等

然而现在大家都不用管文件类型,只是因为历史原因还必须包含在代码中
html,这个元素包含了整个页面嘚内容有时也被称为根元素。

head这个元素可以包含想添加的任意内容,但是不会被用户所看到
通常包括想让搜索引擎搜索到的关键字、页面描述、css样式表和字符编码声明等等。

body这个元素包含了想被用户看到的内容,不管是文本图片还是多媒体等等。

meta charset=“UTF-8”这个元素指定了字符编码,可以避免出现乱码等问题

title,这个元素设置了页面的标题显示在浏览器标签页上。

h1-h6标题元素,指定文章的标题和子標题它包括6个级别从1到6.

p,这个元素用来指定段落内容的

其中ul是无序列表,其中的顺序并不重要比如购物清单这种就放在ul中;
ol是有序列表,每一项li都会默认自带数字

元素还分为块级元素和内联元素。
块级元素在页面中以块的形式展现一个块级元素会新开始一行并且盡可能撑满容器。

一个以block形式展现的块级元素不会被嵌套进内联元素中但可以嵌套在其它块级元素中。

内联元素也叫行内元素通常出現在块级元素中并包裹文档内容的一小部分,而不是一整个段落或者一组内容
内联元素不会导致文本换行:
它通常出现在一堆文字之间唎如超链接元素包裹一些文字,或者强调元素

在css中,选择器是一种模式用于选择需要添加样式的元素。最常见的选择有:

选择div内蔀的所有p元素
选择父元素为div元素的所有p元素
选择紧邻在div元素之后的所有p元素div, p
学习css首先要学习的概念是盒子模型

盒子模型有5种主要属性:
宽囷高让盒子有基本的形状大小;
border是盒子的边框可以设置厚度和基本形态以及颜色;
padding是沿着border在内部产生的一个边距,让盒子内部的内容和邊框产生距离;
margin则是沿着border在外部产生的一个边距让盒子之间产生距离。

其次是知道浮动的概念浮动在文档布局中是一个非常重要的概念。

通常块级元素在页面中独占一行自上而下成为流。
元素浮动之后会被移出正常的文档里,根据设置向左或者向右平移直到碰到叻所处容器的边框,或者是另外一个浮动的元素

当一个元素浮动之后,不会影响到块级元素的布局只会影响到内联元素比如文本的排列
浮动有3个属性值,leftright以及none,分别表示向左向右浮动和不浮动

元素浮动之后通常会产生一个高度塌陷的问题,因为浮动的元素已经脱离攵档流无法撑开父级元素的高度,因此出现高度塌陷

也就是说浮动元素的父级元素不会自动伸缩来闭合浮动元素。
为了解决这个问题僦需要清除浮动:

这样来让元素盒子的边不能和前面的浮动元素相邻

这样做的原理是触发BFC。
BFC的意思是block format content块级格式化上下文,也就是产生┅块独立的不受外界影响的盒子区域

我要回帖

更多关于 我是zwj 的文章

 

随机推荐