⑴ 程序员的逻辑思维可以从哪些方面进行培养呢
程序员逻辑思维的培养对软件工程非常重要,思维快的能快速编写逻辑代码。可以从一下几个方面进行慢慢培养。
第一:明确学习目的
逻辑思维学习编程对多数IT业人员来说都是非常有用的。学编程,做一名编程人员,从个人角度讲,可以解决在软件使用中所遇到的问题,改进现有软件,可以为自己找到一份理想的工作添加重要得砝码,有利于在求职道路上谋得一个好的职位;从国家的角度,可以为中国的软件产业做出应有的贡献,一名优秀的程序员永远是被争夺的对象。学习编程还能锻炼思维,使我们的逻辑思维更加严密;能够不断享受到创新的乐趣,将一直有机会走在高科技的前沿,因为程序设计本身是一种创造性的工作。知识经济时代给我们带来了无限的机会,要想真正掌握计算机技术,并在IT行业里干出一番事业来,有所作为,具有一定的编程能力是一个基本条件和要求。
第二打好基础,学好基础知识对我们开发也很重要学编程要具备一定的基础,总结之有以下几方面:
首先是数学基础 从计算机发展和应用的历史来看计算机的数学模型和体系结构等都是有数学家提出的,最早的计算机也是为数值计算而设计的。因此,要学好计算机就要有一定的数学基础,出学者有高中水平就差不多了。
其次是逻辑思维能力的培养 学程序设计要有一定的逻辑思维能力,“逻思力”的培养要长时间的实践锻炼。要想成为一名优秀的程序员,最重要的是掌握编程思想。要做到这一点必须在反复的实践、观察、分析、比较、总结中逐渐地积累。因此在学习编程过程中,我们不必等到什么都完全明白了才去动手实践,只要明白了大概,就要敢于自己动手去体验。谁都有第一次。有些问题只有通过实践后才能明白,也只有实践才能把老师和书上的知识变成自己的,高手都是这样成材的。最后是选择一种合适的入门语言 面对各种各样的语言,应按什么样的顺序学呢?程序设计工具不外乎如下几类: 1)本地开发 应用软件开发的工具有:Visual Basic 、Delphi 、VC++ ( C++ Builder ) 等;数据库开发工具有:Visual Foxpro 、Oracle Developer 、Power Builder 等。 2)跨平台开发 开发工具如 java 等。 3)网络开发 对客户端开发工具如:Java Script 等;对服务器开发工具如:PHP 、ASP 、JSP 、ISAPI 、NSAPI 、CGI 等。 以上不同的环境下几种开发工具中 VB 法简单并容易理解,界面设计是可设化的,易学、易用。选 VB 作为入门的方向对出学者是较为适合的。
第三:注意理解一些重要概念
一本程序设计的书看到的无非就是变量、函数、条件语句、循环语句等概念,但要真正能进行编程应用,需要深入理解这些概念,在理解的基础上应用,不要只简单地学习语法、结构,而要吃透针对这些语法、结构的应用例子,做到举一反三,触类旁通。
第四:掌握编程思想,编程思想使用较多的就是oop编程思想
学习一门语言或开发工具,语法结构、功能调用是次要的,最主要是学习它的思想。例如学习 VC 就要学习 Windows 的内在机理、什么是线程......;学习 COM 就要知道VTALBE 、类厂、接口、idl......,关键是学一种思想,有了思想,那么我们就可以触类旁通。
第六:多实践、多交流,一切思维来自项目开发的积累
掌握编程思想必须在编程实际工作中去实践和体会。编程起步阶段要经常自己动手设计程序,具体设计时不要拘泥于固定的思维方式,遇到问题要多想几种解决的方案。这就要多交流,各人的思维方式不同、角度各异,各有高招,通过交流可不断吸收别人的长处,丰富编程实践,帮助自己提高水平。亲自动手进行程序设计是创造性思维应用的体现,也是培养逻辑思维的好方法。
第七:养成良好的编程习惯
编程入门不难,但入门后不断学习是十分重要的,相对来说较为漫长。在此期间要注意养成一些良好的编程习惯。编程风格的好坏很大程度影响程序质量。良好的编程风格可以使
程序结构清晰合理,且使程序代码便于维护。如代码的缩进编排、变量命令规则的一致性、代码的注释等。
第八:上网学编程
在网上可以学到很多不同的编程思想、方法、经验和技巧,有大量的工具和作品及相关的辅导材料供下载
8.加强计算机理论知识的再学习
思维培养学编程是符合“理论→实践→再理论→再实践”的一个认识过程。一开始要具有一定的计算机理论基础知识,包括编程所需的数学基础知识,具备了入门的条件,就可以
开始编程的实践,从实践中可以发现问题需要加强计算机理论知识的再学习。程序人人皆可编,但当你发现编到一定程度很难再提高的时候,就要回头来学习一些计算机科学和数
学基础理论。学过之后,很多以前遇到的问题都会迎刃而解,使人有豁然开朗之感。因此在学习编程的过程中要不断地针对应用中的困惑和问题深入学习数据结构、算法、计算机
原理、编译原理、操作系统原理、软件工程等计算机科学的理论基础和数理逻辑、代数系统、图论、离散数学等数学理论基础知识。这样经过不断的学习,再努力地实践,编程水平一定会不断提高到一个新高度。
这就是总结出来的思维培养模式,希望能帮到你,谢谢!
⑵ 入行不久的程序员,软件开发/编程中,对于业务逻辑究竟怎么看待
。。。。业务逻辑就算业务逻辑。。这个还用解释?普遍就算MVC咯,尽量减少耦合性。写代码注意规范格式,因为会减少沟通成本。
⑶ java面试 谈业务逻辑
首先你要考虑的一点是,对方掌握什么样的信息、他应该想从你这里得到什么样的信息。
lz的大体思路是正确的。
首先,对方想要知道的是你做了什么。这个时候需要从整体介绍你制作的项目,例如,你的作品是针对什么样的人群,提供什么样的服务,然后是自己的特点。
然后介绍具体使用了什么样的框架和相关技术。
到此为止还不需要说细节,只要概括就可以。
等到对方问到你的时候,再确认对方想要了解什么,然后再逐一描述。
-------------------------------------------------
每个主考官的思路不同,确切地说没有正确答案,如果是我的话,会按照以下思路回答。
1.自己的思路和理解贯穿一线很重要,但是,自己的能力可以做到那一步,不能做到那一步,在哪方面需要改善,都要明确,被问到的时候诚实的讲出来。
2.基本正确,但是注意着眼点尽可能从整个服务去说,而不是单纯的PG角度。
3.这应该主要是看你的管理能力,同样没有正确答案,只有思路。不要局限于PG,把眼光放到整个团队,思考处于整个团队中的自己,需要做什么、做了什么,哪方面做得比较好、哪方面做得不够,自然而然就知道自己的价值了。
⑷ 程序员分前端与后端,那么后端程序员都做些什么看完就知道了
我刚开始做Web开发的时候,根本没有前端,后端之说。
原因很简单,那个时候服务器端的代码就是一切: 接受浏览器的请求,实现业务逻辑,访问数据库,用JSP生成HTML,然后发送给浏览器。
即使后来Javascript在浏览器中添加了一些AJAX的效果,那也是锦上添花,绝对不敢造次。因为页面的HTML主要还是用所谓“ 套模板 ”的方式生成:美工生成HTML模板,程序员用JSP,Veloctiy,FreeMaker等技术把动态的内容添加上去,仅此而已。
那个时候最流行的图是这个样子:
在最初的J2EE体系中,这个 表示层 可不仅仅是浏览器中运行的页面,还包括Java写的桌面端,只是Java在桌面端太不争气, 没有发展起来。
每个程序员都是所谓 “全栈”工程师 ,不仅要搞定HTML, JavaScript, CSS,还要实现业务逻辑,编写访问数据库的代码。等到部署的时候,就把所有的代码打成一个WAR包,往Tomcat指定的目录一扔,测试一下没问题,收工回家!
不差钱的公司会把程序部署到Weblogic,Websphere这样的应用服务器中,还会用上高大上的EJB。
虽然看起来生活“简单”又“惬意”,但实际上也需要实现那些多变的、不讲逻辑的业务需求,苦逼的本质并没有改变。
随着大家对浏览器页面的 视觉和交互 要求越来越高,“套模板”的方式渐渐无法满足要求,这个所谓的表示层慢慢地迁移到浏览器当中去了,一大批像Angular, ReactJS之类的框架崛起,前后端分离了!
后端的工程师只负责提供接口和数据,专注于业务逻辑的实现,前端取到数据后在浏览器中展示,各司其职。
像Java这样的语言很适合去实现复杂的业务逻辑,尤其是一些MIS系统,行业软件如税务、电力、烟草、金融,通信等等。 所以剥离表示层,只做后端挺合适的。
但是如果仅仅是实现业务逻辑,那后端也不会需要这么多技术了,搞定SSH/SSM就行了。
互联网,尤其是移动互联网开始兴起以后,海量的用户呼啸而来,一个单机部署的小小War包肯定是撑不住了,必须得做分布式。
原来的单个Tomcat得变成Tomcat的 集群 ,前边弄个Web服务器做请求的 负载均衡, 不仅如此,还得考虑状态问题,session的一致性。
(注:参见文章《小白科普:分布式和集群》)
业务越来越复杂,我们不得不把某些业务放到一个机器(或集群)上,把另外一部分业务放到另外一个机器(或集群)上,虽然系统的计算能力,处理能力大大增强,但是这些系统之间的通信就变成了头疼的问题, 消息队列 (MQ), RPC框架 (如Dubbo)应运而生,为了提高通信效率,各种 序列化的工具 (如Protobuf)也争先空后地问世。
单个数据库也撑不住了,那就做数据库的 读写分离 ,如果还不行,就做 分库和分表 ,把原有的数据库垂直地切一切,或者水平地切一切, 但不管怎么切,都会让应用程序的访问非常麻烦,因为数据要跨库做Join/排序,还需要事务,为了解决这个问题,又有各种各样“ 数据访问中间件 ”的工具和产品诞生。
为了最大程度地提高性能,缓存肯定少不了,可以在本机做缓存(如Ehcache),也可以做 分布式缓存 (如Redis),如何搞 数据分片 ,数据迁移,失效转移,这又是一个超级大的主题了。
互联网用户喜欢上传图片和文件,还得搞一个 分布式的文件系统 (如FastDFS),要求高可用,高可靠。
数据量大了,搜索的需求就自然而然地浮出水面,你得弄一个支持全文索引的 搜索引擎 (如Elasticsearch ,Solr)出来。
林子大了,什么鸟都有,必须得考虑 安全 ,数据的加密/解密,签名、证书,防止SQL注入,XSS/CSRF等各种攻击。
前面提到了这么多的系统,还都是分布式的,每次上线,运维的同学说:把这么多系统协调好,把老子都累死了。
得把持续集成做好,能自动化地部署,自动化测试(其实前端也是如此),后来出现了一个革命化的技术 docker , 能够让开发、测试、生成环境保持一致,系统原来只是在环境(如Ngnix, JVM,Tomcat,MySQL等)上部署代码,现在把代码和环境一并打包, 运维的工作一下子就简化了。
公司自己购买服务器比较贵,维护也很麻烦,又难于弹性地增长,那就搞点虚拟的服务器吧,硬盘、内存都可以动态扩展(反正是虚拟的), 访问量大的时候多用点,没啥访问量了就释放一点,按需分配,很方便,这就是 云计算 的一个场景。
随着时间的推移,各个公司和系统收集的数据越来越多,都堆成一座大山了,难道就放在那里白白地浪费硬盘空间吗?
有人就惊奇地发现,咦,我们利用这些数据搞点事情啊, 比如把数据好好分析一下,预测一下这个用户的购买/阅读/浏览习惯,给他推荐一点东西嘛。
可是这么多数据,用传统的方式计算好几天甚至好几个月才能出个结果,到时候黄花菜都凉了,所以也得利用分布式的技术,想办法把计算分到各个计算机去,然后再把计算结果收回来, 时势造英雄, Hadoop 及其生态系统就应运而生了。
之前听说过一个大前端的概念,把移动端和网页端都归结为“前端”,我这里造个词“大后端”,把那些用户直接接触不到的、发生在服务器端的都归结进来。
现在无论是前端还是后端,技术领域多如牛毛,都严重地细分了,所以 我认为真正的全栈工程师根本不存在,因为一个人精力有限,不可能搞定这么多技术领域,太难了 。
培训机构所说的“全栈”,我认为就是前后端还在拉拉扯扯,藕断丝连,没有彻底分离的时候的“全栈”工程师。
那么问题来了, 后端这么多东西,我该怎么学?
之前写过一篇文章叫做《上天还是入地》,说了学习的广度和深度,在这里也是相通的。
往深度挖掘,可以成为某个技术领域的专家,如搜索方面的专家、安全方面的专家,分布式文件的专家等等,不管是哪个领域,重点都不是学会使用某个工具和框架, 而是保证你可以自己的知识和技术去搞定这个领域的顶尖问题。
往广度发展,各个技术领域都要了解,对于某种需求,能够选取合适的软件和技术架构来实现它,把需求转化成合适的技术组件,让这些组件以合适的方式连接、部署、运行,这也需要持续地学习和不断的经验积累。
最后,以一张漫画来结束吧!
C/C++高级工程师学习路线图:
⑸ 程序员如何避免写过多的业务逻辑代码
就我个人而言,我认为编写业务逻辑代码仍然易于阅读和理解代码可读性。如果有问题的代码,它可以快速定位和修复。我们不写底层框架,我们想追求各种设计和可扩展性。虽然面向对象的内聚性和封装性、子方法和类等太多,但它会使人周围眩晕,我建议尽可能采用内联方法,同样的业务都是以某种方式进行的,如果这个逻辑太长,可以一些测试方法考虑提取(尽量不要太多)。对于类,不要移动到类来封装一个类,以避免类扩展。
UT斯达康可以给我们信心。此外,UT还可以帮助您编写清晰的代码。只是简单的根据业务场景直白的编写代码也是不可行的。必要的设计可以带来更加清晰的代码结构。
⑹ 程序员如何提高理解能力
你要清楚程序的作用是什么就好了!程序就是把实际需求利用程序去实现、有一句话说的好:一个不好的程序员最后死在需求上。你把一定要换位思考就好了!站在产品需求者上考虑下,不要用你编程的思想去想他的问题。
⑺ Java程序员需要掌握哪些技术
Java程序员需要掌握哪些技术?Java的技术体系是非常庞大的,需要我们学习的技术非常多,往往很多初学的人,通过互联网查阅了一个庞大的学习列表,然后不知道如何下手。网上很多大牛列的技术不是不重要,但是掌握住企业应用的Java的核心技术,快速上手,是一种高效的学习手段。下面汇总了一下关于Java程序员需要掌握那些技术
第一、Java程序员需要掌握哪些技术?学会一个web服务
J2EE服务器——tomcat、Nginx、httpd等。其实要掌握的也简单那,知道什么文件部署在什么地方,只要会下载,能启动,能知道最直接、最关键的配置文件名字和位置就可以了。其他的服务器的名字了解一下就足够了。
第二、Java程序员需要掌握哪些技术?会一个框架
建议你学springMVC,因为所有的mvc框架都类似,只要坚持学习了MVC,其他的SSH、SSM等是容易借鉴的。作为一名新人在面试的时候可以说你自己擅长的,其他的框架了解一点点原理就行了,但是欠账还是要补上的,虽然说平时用顺手的框架也就那么几个,但是后期还要继续学习。
第三、Java程序员需要掌握哪些技术?数据库
mysql关系型数据库就很好,坑浅应用多,最近连集群支持的都很好了,你只要强调一点,数据库,你不是DBA,你还不懂如何调优,如何调执行计划,你只懂增删改查,所以你要学的就是T-SQL,标准是你能手写带条件的增删改查,会复杂语句更好,稍微了解下sql效率方面的问题,为了面试也是可以。MSSQL在国内被鄙视的不行,如果有人叫你弄oracle,那又是太装逼,我身边有一票的5年+程序员,其中有超过一半连oracle的AWR都不会读,有的连数据字典都不知道。
第四、Java程序员需要掌握哪些技术?程序方面
jdbc需要了解下,相关的有连接字的写法,如何准备和获取结果,什么是resultset这类东西,当然,数据库连接的关闭和释放也是需要的。
类和抽象类和接口的关系搞清楚,继承和实现搞清楚,重载重写搞清楚这些都是基本概念。
由于Java主要是B/S结构,无论是集成还是自己的前后端,你都要看一下http,整个http的生命周期是什么?存在哪些步骤和不同的application负责哪个阶段,相关的有几个request和response实体,包含什么是session了解下。
业务逻辑的话,上手仔细写几个例子就好了
第五、Java程序员需要掌握哪些技术?IDE
你总逃不过eclipse和几个大厂的东西。要用简单易用的,别花太多时间在这个上面。
第六、Java程序员需要掌握哪些技术?设计模式
你要稍微看一下,了解什么是设计模式,你大可以老实说,你根本刚入行,只是粗通工厂模式和单粒,其他的需要在工作中学习,这样既不会显得完全不懂,也不会出什么纰漏。
第七、Java程序员需要掌握哪些技术?前端
前端不需要了解太多,JSP+JS就足够了。jsp上有个容易忽视的基础点:tag到底是什么如何处理。jsp的生命周期这些也最好看一下。
基础的devops稍微了解下,git的代表,github可以注册一个账号,搞清楚本地repo和远程repo之间的关系即可。SVN更为简单一点。
Maven也要学习一下,主要是pom文件的几个主要的部分,尤其是depedency。
Java程序员需要掌握哪些技术?想要成为一名合格的Java程序员需要具备以上技术技能,并且不断地进行学习才能获得更好的发展。
⑻ 从哪些点上可以体现一个程序员的实力
对于一个程序员来说,刚上任的新手,如果能够将工作任务高效地处理,证明其工作能力还是具备一定的基础的,企业大可继续留任试用。如果这个程序员不仅能够在短时间内高效处理工作内容,且对于工作的细节也十分地考究,充分全面地考虑,必然也代表其工作思维和普通员工不同。一个程序员如果对于工作只是在应付差事,那么必然其能力也不会好到哪里去,因此,一定要观察期对待工作态度是否认真,然后进行其能力的初步判断。
⑼ 天天写业务逻辑代码改Bug,程序员该如何实现
这件事让她自己也觉得不可思议:“以往我觉得编程与自己是遥不可及的事情,如今我发现编程可以像搭积木一样,只要你有自己的业务逻辑蓝图,你就可以设计出自己想要的管理系统。”
编程可以像搭积木一样简单
易群利在网上查找很久关于企业信息化系统开发的各类商家后,最终发现云表是最能帮助她实现自己愿意的供应商。于是她于3月12日来到珠海参加了云表开发工程师培训。
ERP的颠覆者
云表,是一个基于表格数据处理的免代码的企业信息系统构建平台,这个系统内建了强大的底层编译体系,它就像搭积木一样编程,只要你会熟悉业务流程和计算公式,你就可以为自己设计一套管理软件。
云表创始人张军是一名编程高手,在经过10年企业ERP开发无穷的折磨之后,他潜心研究表格插件,将企业管理的业务逻辑全部使用表格来进行描述,提出了“一切管理基于表格”的思想。在这个思想框架之下,云表被他开发成一种能像“DEAMWARE”一样可视化编程的软件开发工具。
张军在多年承揽客户的ERP管理软件开发过程中,尝到了诸多痛苦,最大的痛苦在于客户经常自己也不清楚软件的业务逻辑应该是怎样,频繁的改动,让他在代码开发层面修改过程受尽折磨。于是,他希望开发一个平台,一是让开发能够快速适应需求的变更,更重要的是让那些真正熟悉自己业务的人去为自己开发系统。这就要求用云表开发一个系统,不需要任何编写代码的技能。
这件事情背后,是对原有包括全球一流ERP等企业信息化软件二次开发体系的颠覆,因为,对于企业老板来说,以往没有程序员,不可能拥有合适自己企业的管理系统,而有了云表,老板们甚至自己动手,研究一两个月,都能一个人将一个管理系统开发出来。
真正的“免代码编程”系统
2016年3月12日,云表创始人张军首次进行了为期三天的合作伙伴培训大会,这次合作伙伴大会,意在未来让一群原本从事IT顾问的人员,用云表这套系统,按照十分之一的成本,不编写一行代码,就能实现以往经过数月才能完成的系统功能。
⑽ 程序员是干什么的
程序员(英文Programmer)是从事程序开发、程序维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚。软件从业人员分为初级程序员、中级程序员、高级程序员(现为软件设计师)、系统分析员,系统架构师,测试工程师六大类。
职责
1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
3、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
4、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
5、负责相关技术文档的拟订。
简单来说,就是写代码的。