能自学如何自学成为程序员吗

&&问题详情
通过自学刚刚找到工作的程序员如何在工作中提高自己?
本人自学编程大概半年,主要通过看视频加练习,但学习内容主要在业务层和基本用法。
在找工作面试中,被问过许多数据结构和算法、设计模式、网络协议等等方面的问题,还现场手写过一些算法题,小算法题还好,其他都是知道一点概念,理解的并不是很深入。
虽然现在可以完成基本的开发工作,但毕竟大学专业不同,没有接受过系统的训练,想要走的更远则需要基础知识和思维的厚度,所以想把基础打牢。
看了一下计算机专业的课程,发现有很多门,离散数学、计算机组成原理、编译原理、计算机原理、操作系统、网络协议、数据结构和算法、设计模式、数据库、C语言等等等等太多了,不知道从哪里入手比较好?
现在想法是最需要的是学习与工作相关的部分,比如http协议、数据结构、设计模式之类,不知道还有什么,或者还有什么建议,推荐一些书也可以
您的回答过短,请将答案描述得更清楚一些
回答被采纳后将获得系统奖励20
看到很多答主的推荐,都挺有意思,推荐的网站,进阶书籍都是我了解或想要学习的。不过,现在这时代,获取信息已经是非常简单的一件事情了,有些事情你知道该怎么去做,却不是没时间做,就是想着以后去get它。这是大多数人的通病,如果能够改善,那基本上能学任何自己想学的东西。在这里先抛几点。1、平时工作占用自己多少时间?发现有些人,做一些简单的工作,都不知不觉耗费一天的时间,这是非常浪费的。如果能够改善,无疑挤出大量的时间来自学。2、获取知识的顺序。不要跟风地学习别人眼中热门的技术,而应该根据自己的基本情况、工作要求,兴趣逐步扩展。比如你没有基本的算法基础,硬去啃机器学习,不懂得一个网站的基本架构是怎样的,就开始撸分布式。3、核心知识很重要。算法,操作系统,程序语言设计,决定了你的高度。你不深入他们,学习其它的技术,会耗费很多时间。4、勤编码,多思考。思考会让你发现问题,而编码,是自己尝试去解决问题。别老去写一些XX语法怎么用的代码,而多写一些自己思考后,抽象出来的代码。
投入很多很多很多很多时间。
无腰可卸首先,我很负责任的告诉题主,工作和是不是计算机专业毕业完!全!没!有!关!系!我的大学是一二本混合的,计算机学院属于学校里中上流。然而认真的念完四年书,真的是凭借学到的知识是找不到工作的!包括我自己在内,凡是找到好工作(腾讯百度华为中软都有,不晓得算不算够好的了)都是在大四的时候参加【培训机构】。这就好像是大学课程里教了你汽车发动机如何工作,动能如何传导,燃料效能。然后培训机构教给你,如何插钥匙,怎么挂档,制动如何工作。好像说的有点跑题。。。扯回来,上面意思呢就是题主真的不需要在意有没有读过计算机专业。我现在工作的领导是数学系的,同事有土木啊,机械啊,甚至还有文科的。。。不过不影响他们一样很优秀。-----以下干货-------&hr&<
计算机无非软件+硬件。不要以为你做软件就不用管硬件。欲精一行,必先通十行。苹果之所以能有那么好的用户体验。业内独一无二。根本在于它软硬件天一无缝的配合。既然如此,计算机在国内而言有四大核心知识体系。
分别是数据结构*组成原理*操作系统*计算机网络.这四门课也是国内计算机考研的综合科目。分别从最基础的数据组织,硬件逻辑,软件系统。计算机互联阐述了整个计算机科学体系。从数据结构往下就是c语言(学数据结构用c语言版最好),c的灵魂在于指针。指针核心在于理解组成原理中数据在内存中存储及寻址方式。c基础好了。其余的语言核心就都理解的,代码的造诣就在于各种设计模式的掌握及编程技巧与个人灵性了。所以,软件与硬件协同过程都得了然于心才能走得远。飞得高,没事多想想很简单的一个鼠标点击对整个pc产生了怎样的影响。这幅图越清晰,越明白的在心中绘制出。自身的计算机知识体系就越完善。再说计算机网络,就是架在软硬件基础上的一次分布式设备互联。可以想一想如果一台个人pc的五大组成部分分割在很远的地方他们如何通信。其实计算机网络就是回答这样一个问题。无论学什么,多思考。不要拘泥于书本。尤其对于国内的计算机学者。不要读译本。好书都被翻译毁了。多读国内大牛自身的经验与理解之谈。最后,计算机领域要飞得高。英文不行先学英文。不用很精通。国外的专业技术文档至少能流畅阅读。 英文不好,再学都只能那样了。国内这种浮躁的环境下。没有一块能好好钻研的净土。
谢邀。借这个问题浅谈一下我个人认为的刚工作的程序员应该注意的一点事情吧,个人看法,权当参考。另1:我本人半个科班出身(自动化专业,和计算机专业关联还算比较大),通过看书自学过也通过看视频自学过,目前在J2EE领域做着一点微小的工作;另2:这篇文章的结构是自引用的,类似于简单的架构设计;一.基础层设计:思维的锻炼基础层也就是抽象层,声明着最基础的原则与思想。一方面,它是基础,是我们思维与素质构建的始发源;另一方面,它又很抽象,差不多都是空谈,没有具体实现。闲话少说,我个人认为初入社会的程序员应该有的思维包括:1.结构化的思维所谓程序员的逻辑思维,其中最重要的,我认为是结构化思维,也就是理解结构的思维。比如每一个类映射为一个实体,类之间的结构与关系是要弄清楚的;OOD是对现实的模拟,现实中的业务如何映射为类以及类的交互的,也应该清晰。而已有的设计原则与设计模式,则是动态地理解结构,比如从java已有的类交互原则到静态工厂、动态工厂,再到更高层的依赖注入、控制反转,一条主线就是理解类、对象之间是如何动态交互的。因此,善于理解事物的抽象结构,对于初入实际项目的开发者而言,是很重要、很基础的一种能力。2.系统化思维对于刚工作的程序员而言,特别是看那些视频自学的人而言,很可能对于技术的理解完全是流于表面的,拿java来说,往往只是知道语言的规范而不知变通,对于很多表面看似“矛盾”的应用会很困惑。这个时候,就需要有系统化思考的能力,了解java中简单的内存分配以及基础的编译机制,将其处理过程映射到java代码的实际工作流程中,建立对应的系统,加深理解。类似于一个简单的“人肉编译器”。3.理解复杂性的思维如果说结构化、系统化是顺式建构,那么理解复杂性则是融会贯通之,对软件、业务复杂度的横向的切面式的理解。比如在语言层面理解语言在进步过程中思想交汇的趋势(面向对象与函数式范式的融合);在代码层面理解软件原有复杂度以及各种范式破坏复杂度之间的平衡;理解简单算法的某个内核精神如何融合在实际处理中而不是该算法;理解特殊业务需要的“不漂亮”的实现方法。其实际应用之复杂,往往与书上说好的理论相悖,让人困惑,这个时候,要理解这种实际设计过程中的复杂性以及其利弊。二.接口与方法层设计:主要领域在实际项目中,践行基础层,融入实际开发团队,主要应该关注的领域包括:1.设计原则与设计模式一般的项目中最开始面对的,在技术与业务之间建立结构性联系的,就是设计原则与设计模式。特别是对于那些自学的人而言,进入项目之后,如何快速理解原有的架构设计业务逻辑?如何处理一般流程(比如实现某个功能,写配置,action,jsp)?要知道,很多项目都没有设计图给你看的,最多只有表结构,你不从基础的设计模式、一般原则去理解业务,往往抓不住其神,融入也很慢。2.软件工程的一般经验这些经验包括一般的代码规范、团队本身的代码规范,团队工作的一般流程等(比如bug处理,流程设计,部署情况(maven,git)等)融入一个团队,往往并不是从零开始的,而是带着一般的软工经验,参照着进入的。3.沟通能力融入团队,主要还是和人打交道,如何和别人愉快地合作,开心地debug,也是一门学问。一般的公司的程序员,除了思维语言某些时候略屌丝之外(别的行业也差不多),人都是不坏的,可能说话比较直,但人并没有太多歪歪肠子,和他们沟通,无论是前辈还是同侪,并不需要费多少心机,保持基本的礼仪和笑容就行。关键的是在沟通的时候如何准确、准确、准确地描述你的问题和你的答案,节省大家的时间。毕竟大家时薪都不高对不对,还要留着时间找女朋友呢哈哈。三.实现层设计:书籍、工具一些理论性较强的书,特别是算法、计算机系统方面的知识,可以慢慢来,很可能前三年都用不到,不要着急去啃,啃了也会忘;许多零碎的知识,善于搜索就能解决。1.推荐初入实际项目者看看的书籍软件设计原则与设计模式:《冒号课堂 (豆瓣)》--高屋建瓴地理解软件设计;软件设计经验之谈:《程序员修炼之道 (豆瓣)》;知名神器,详解各种经验和坑:《代码大全(第2版) (豆瓣)》;如何写简洁的代码:《代码整洁之道 (豆瓣)》理解基础编译与语言设计的原理:《编程语言实现模式 (豆瓣)》;调试软件:《调试九法 (豆瓣)》;以上部分书绝版,可看电子书。2.善用搜索,从网络学习对于程序员而言,网络是个很大的资料库,善用搜素,在介入项目过程中,能起到很大的帮助之作用。一些基础的配置问题,包括最简单的环境变量设置,部署流程(maven,git),工具使用(IDE)都能搜到很详细的信息。3.从公司内部资料中学习公司内部也有资料库,有些专门给新人看的,是不错的学习资料。有些资料会有详尽地介绍各种开发工具与部署情况,很珍贵,比网上的还好,要好好看的,也多向前辈们请教。大概就是这么多了,延伸地谈一点:非科班出身和科班出身差距大吗?我个人认为,其实,现在软件开发,如果从业务开发切入一个项目,一个非科班出身和科班出身的人,差别并不是太大。为什么?因为:第一,中国这些大学,学校教的东西,跟快速发展的实际项目开发,往往是完全脱节的,很多学生在学校做过项目的经验(特别是大作业那种),往往并不能移植到实际开发中,加上很多科班出身的,也根本没有额外的、自己开发项目的经验;第二,科班出身学习的算法、计算理论、计算机系统、数学、编译器知识,虽然很重要很基础,但对于具体的开发项目,一开始切入基本上是涉及不到的,反而是设计模式倒是很重要,但是很多学校又轻视了;第三,软件开发本来是一件很难、需要投入高智力才能干好的事情,但由于现代软件业的巨大发展,需要很多资质一般的人员的支持,以及加上各位前辈的积累,现在的软件开发已经由小众变得大众化了,变得依托于各种工具与模式来工作了。考虑到科班出身倾向于理论,对于具体工具的使用以及业务的理解,二者的操作能力之间并不见得就有天差地别了。最后,即便是有差别,非科班的也可以在项目开发之余,一点点补上,包括数学的、系统的、算法的等等,完全来得及,甚至比某些科班出身却不怎么努力的,理解地更为深入。
很简单啊!把php学好……这些你慢慢都会精通的!
先让自己能胜任现在的岗位,工作需要什么就学什么,如果还有精力就自己看着办!哈哈。。。
现在想法是最需要的是学习与工作相关的部分,比如http协议、数据结构、设计模式之类,不知道还有什么,或者还有什么建议,推荐一些书也可以数据结构,还是有必要补一下的,可以找一本大学的教程,里面的实现可以用你自己熟悉的语言实现。设计模式这个东西,我是不建议去“学”,这个东西是自然而然的,是前人的总结,你自己开发到一定的程度会发现自己会自然用到其中的一种或多种模式。而单纯的“学”,往往会很模式化的套用。http不知道你要学到什么程度,一般的程序员基本知道个概念就好了,当然你也可以从传输层到应用层协议都了解一下,对于普通程序员比较重要的,就是了解http头中的各种含义。,以及部署http服务器。
自学找工作的建个群可好??过程中多交流下
第1-10条,共19条 &
手机动态登录
请输入用户名/邮箱/手机号码!
请输入密码!
Copyright &
Shang Hai Jing Rong Xin Xi Ke Ji You Xian Gong Si
上海旌荣信息科技有限公司 版权所有
客服电话: 400-850-8888 违法信息举报邮箱:新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID空间积分0 积分1910阅读权限30帖子精华可用积分1910 信誉积分1539 专家积分0 在线时间3631 小时注册时间最后登录
家境小康, 积分 1910, 距离下一级还需 90 积分
帖子主题精华可用积分1910 信誉积分1539 专家积分0 在线时间3631 小时注册时间最后登录
认证徽章论坛徽章:8
获奖名单已公布:
程序员是否应该学习编译原理,这是一个老生常谈的话题。我是一个非科班出身的程序员,深感很多同是电子相关专业出身的程序员在这方面的不足,例如通信、控制、电气等专业,往往只知道使用IDE或者Tool进行编程,但是却很不了解这些工具的本质。有些时候甚至很难习惯在没有IDE的环境下编程,也不清楚如何写出高性能的程序。只关注程序的编译结果,不关心编译的本质,导致很多时候只知其然不知其所以然。 程序员是否有必要学习程序编译原理,欢迎大家畅所欲言。
1、程序员应该学习编译原理吗?有什么作用,说出你的观点。
2、你是否研究过自己所使用的编译器?
3、是否清楚程序编译的整个过程?
4、分享一个自己处理过的棘手的编译错误。
5、分享自己学习程序编译相关技术的收获。
6、分享学习程序编译相关的原理对自己写程序的帮助。
活动结束后将选取4名讨论精彩的童鞋,每人赠送图书《高级C/C++编译技术》一本作为奖励
22:46 上传
原书名:Advanced C and C++ Compiling
作者: (美)米兰·斯特瓦诺维奇(Milan Stevanovic)& &
译者: 卢誉声
丛书名: C/C++技术丛书
出版社:机械工业出版社
出版日期:2015 年4月
开本:16开
米兰·斯特瓦诺维奇编著的这本《高级C\C 编译技术》从多个角度全面、系统地讲解多任务操作系统中编译、链接、装载与库的内幕和技术细节,为深入理解和掌握系统底层技术提供详实参考和实践指南。与纯粹讲解理论与技术细节的书不同。本书一方面对基本的理论进行了阐述,另一方面则聚焦于C/C 使用静态库和动态库的一些注意事项,并举例说明如何解决实际的链接与装载问题。此外,本书尽量使用通俗易懂的语言来阐述这些知识,并补充了大量示例,避免让读者整天纠结于枯燥的理论。
(6.29 MB, 下载次数: 512)
22:47 上传
下载次数: 512
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID空间积分0 积分18149阅读权限90帖子精华可用积分18149 信誉积分4520 专家积分302 在线时间16638 小时注册时间最后登录
大富大贵, 积分 18149, 距离下一级还需 1851 积分
帖子主题精华可用积分18149 信誉积分4520 专家积分302 在线时间16638 小时注册时间最后登录
认证徽章论坛徽章:179
那还不如学汇编,更管用
钱钱钱钱钱钱钱+++++++++++++++++
UID空间积分0 积分7417阅读权限70帖子精华可用积分7417 信誉积分696 专家积分10 在线时间790 小时注册时间最后登录
富足长乐, 积分 7417, 距离下一级还需 583 积分
帖子主题精华可用积分7417 信誉积分696 专家积分10 在线时间790 小时注册时间最后登录
论坛徽章:0
了解一些会有帮助。特别是语法树AST相关的一些概念,能帮助程序员更好的理解语法。
有个签名貌似帖子好看一点
UID空间积分0 积分19429阅读权限90帖子精华可用积分19429 信誉积分3435 专家积分0 在线时间6430 小时注册时间最后登录
大富大贵, 积分 19429, 距离下一级还需 571 积分
帖子主题精华可用积分19429 信誉积分3435 专家积分0 在线时间6430 小时注册时间最后登录
论坛徽章:27
看干什么吧,做底层的了解多些好,做web前端,不是虐人心吗。。
没啥编译错误印象深刻的有个别人的运行bug记忆犹新,大概原因是
.c里&&char xxx[2][3];
.h里 extern char xxx[3][3];
几个人围着找了两三天
UID空间积分0 积分1340阅读权限30帖子精华可用积分1340 信誉积分190 专家积分0 在线时间211 小时注册时间最后登录
家境小康, 积分 1340, 距离下一级还需 660 积分
帖子主题精华可用积分1340 信誉积分190 专家积分0 在线时间211 小时注册时间最后登录
论坛徽章:4
想学的就是缘份到了,不想学就是缘份没到。
UID空间积分0 积分19429阅读权限90帖子精华可用积分19429 信誉积分3435 专家积分0 在线时间6430 小时注册时间最后登录
大富大贵, 积分 19429, 距离下一级还需 571 积分
帖子主题精华可用积分19429 信誉积分3435 专家积分0 在线时间6430 小时注册时间最后登录
论坛徽章:27
& & 确实!
在BSD版学习,专混教育版
UID空间积分804 积分41451阅读权限100帖子精华可用积分41451 信誉积分3833 专家积分40 在线时间9333 小时注册时间最后登录
帖子主题精华可用积分41451 信誉积分3833 专家积分40 在线时间9333 小时注册时间最后登录
认证徽章论坛徽章:41
这个要看是哪种语言的程序员,底层的语言,特别是c语言,肯定要学编译原理,否则就是知识有缺陷,遇到性能问题,或者其他莫名奇妙的问题,就会无从下手。实际上不仅编译原理,汇编也要懂一些,很多底层的编程中就夹杂着汇编语言。
像php、perl、vb之类的高级语言,编译原理帮助应该不是太大。
海纳百川,有容乃大;壁立千仞,无欲则刚。
----------------------------------------
UID空间积分0 积分2049阅读权限50帖子精华可用积分2049 信誉积分2703 专家积分0 在线时间1605 小时注册时间最后登录
小富即安, 积分 2049, 距离下一级还需 2951 积分
帖子主题精华可用积分2049 信誉积分2703 专家积分0 在线时间1605 小时注册时间最后登录
认证徽章论坛徽章:37
高层编程语言比如PHP这样的 的确没啥帮助
lsstarboy 发表于
这个要看是哪种语言的程序员,底层的语言,特别是c语言,肯定要学编译原理,否则就是知识有缺陷,遇到性能问 ...
UID290892空间积分0 积分2037阅读权限50帖子精华可用积分2037 信誉积分1617 专家积分0 在线时间1747 小时注册时间最后登录
小富即安, 积分 2037, 距离下一级还需 2963 积分
帖子主题精华可用积分2037 信誉积分1617 专家积分0 在线时间1747 小时注册时间最后登录
认证徽章论坛徽章:2
学好php、android、ios,走遍天下都不怕。编译原理忘的只剩点理论了。
.......厚积薄发,蓄势待发!
这样的生活锋利如刃......
在BSD版学习,专混教育版
UID空间积分804 积分41451阅读权限100帖子精华可用积分41451 信誉积分3833 专家积分40 在线时间9333 小时注册时间最后登录
帖子主题精华可用积分41451 信誉积分3833 专家积分40 在线时间9333 小时注册时间最后登录
认证徽章论坛徽章:41
java跟编译原理关系密切吗?
海纳百川,有容乃大;壁立千仞,无欲则刚。
----------------------------------------给程序员的设计学习指南 -
CocoaChina 苹果开发中文站
给 程序员 的设计学习指南
需要特别说明的是 ,这是给 移动开发者 准备的设计学习指南。在这里你将接触到三大平台的设计规范、基础设计理论,以及设计实践,还有一些学习设计的资源。
程序员为什么需要学习设计?
理解设计能让程序员更上一层楼,能让TA与设计师的交流协作更高效愉快,甚至拥有独立开发面向大众的APP的能力。更多请阅读 《》。
本专题的内容包括UI设计、交互设计以及用户体验设计。
首先你需要学习的是三大平台的官方设计规范。
iOS开发者需要学习Android和WP平台的规范吗?需知,他山之石可以攻玉,在这些规范中都有一些理念是通用的,学习别家平台的设计可以为本平台的设计提供新思路。
苹果人机界面指南
谷歌 Material Design
微软 Windows8 Style
有些时候,我们觉得某个设计好,却不知道它好在哪里,其实这是因为缺乏理论基础。下面帮大家快速的了解一下UI设计和交互设计中的概念和理论。
交互设计术语理解:
UI设计色彩原理:
Color Wheel
交互设计:
泰思勒定律
奥卡姆剃刀
学完理论,我们还需要动手实践。在Stack Overflow有个问题问程序员如何学习设计(),一位设计师回答,多看、多模仿、锻炼“审美眼”,品位上去了才能做出好的设计。
我们总结了一些对学习设计有用的资源,包括Dribbble上follower最多的设计师和团队、国内设计博客和一些工具网站,放在这里分享给大家。
Mike | Creative Mints ( / )
Eddie Lobanovskiy ( / )
Dan Cederholm ( / )
Creativedash ( / )
Kerem Suer ( / )
腾讯系: ( /
阿里系: ( /
百度系: ( /
其它: ( /
个人: ( /
微博大家说
如果说编程是未来的必备技能,那么设计就是提升附加值的技能。未来可能技术不再是门槛,。学习设计即使不为征服用户,也能提高自己的审美,做一个更有品位的人。
Editor of CocoaChina}

我要回帖

更多关于 自学程序员哪个方向好 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信