当前位置:首页 » 编程软件 » 编程难题

编程难题

发布时间: 2024-09-24 19:23:23

Ⅰ 如何突破编码瓶颈

爱立信提出,重要的并不是经验本身,而是“努力的学习”,也就是要不断地挑战自身能力之外的东西。一些狂热的爱好者花费了大量的时间去下棋、打高尔夫球或者玩乐器,但他们可能始终停留在业余水平上,而一个训练有素的学生却可以在相对较短的时间里超越他们,原因就在这里。值得注意的是,在提高水平方面,花费在下棋上的大量时间(即使参加各种比赛)似乎还是比不过专门的训练来得更为有效。训练的主要价值在于发现弱点,并有针对性地进行提高。
“努力的学习”意味着,要常常去处理那些刚好在你能力极限上的问题,也就是那些对你来说有很大可能失败的事情。如果不经历一些失败的话,你可能就不会成长。你必须不断地挑战自我,超越自己的极限。
那样的挑战有时会在工作中碰到,但也未必。将锻炼从职业工作中分离出来,这在编程领域常被人称为“编码套路”(Code Kata)。
Code Kata的概念是由David Thomas提出的,他是《程序员修炼之道:从小工到专家》的作者之一。这个概念主要指的是,针对某一种特定技术或技能进行重复性的练习,从而将其熟练掌握。——译者注
所谓套路,就是一系列的招式。这个概念借鉴于武术。
如果你想要看一些编码套路的例子(也就是努力学习和磨练编程技能的方法),SteveYegge的文章里倒是提出了一些不错的建议。他把它们称作为“实践演练”:
1.写一份自己的简历。把自己所有的相关技能都罗列出来,然后把那些在100年后还用得到的标出来。给每个技能打分,满分为10分。
2.罗列出你所景仰的程序员。尽量包括那些与你一起工作的人,因为你会在工作中从他们身上获取一些技能。记录下他们身上的1 ~ 2个闪光点,也就是你希望自己有所提高的方面。
3.查看维基网络上的“计算机科学”栏目,找到“计算机领域先驱者”这个分类,从这个列表中挑选一个人,阅读他的事迹,并且在阅读时打开任何你感兴趣的链接。
4.花20分钟通读别人的代码。读出色的代码和读糟糕的代码都是有益的,两者都要读,轮流切换。如果你无法感觉出它们之间的区别,可以求助于一位你尊敬的程序员,让他给你展示一下什么是出色的代码、什么是糟糕的代码。把你读过的代码给别人也看看,问问他们的看法。
5.罗列出你最喜欢的10个编程工具——那些你觉得你用得最多、非有不行的工具。随机挑选其中的一个工具,花一个小时去阅读它的文档。在这一个小时里,努力去学习这个工具的某个你不曾意识到的新功能,或者发现某种新的使用方法。
6.想一想,除了编程之外你最擅长什么事情?再想一想,你是通过怎样的锻炼才变得如此熟练和专业的?这对于你的编程工作又有什么启发呢?(怎么把这些经验应用到编程方面?)
7.拿出一叠简历,并和一组面试官在同一个房间里待上一个小时。确保每份简历都至少被3个面试官看过,并且要给出1 ~ 3分的评分。针对那些不同面试官评判大相径庭的简历展开讨论。
8.参与一个电话面试。事后写下你的反馈,抛出你的观点,然后与主持电话面试的人聊一聊,看看你们是否达成了一致的结论。
9.进行一次技术面试,并且被面试的人应该是某个你不太了解的领域里的专家。让他假定听众在该领域里一无所知,因此请他从最基础的讲起。努力去理解他所说的,必要时问一些问题。
10.有机会参与别人的技术面试。期间,你只是认真地听、认真地学。在应聘者努力解决技术问题的同时,你也要在自己脑子里尝试解决这些问题。
11.找到一个能和你交换实际问题的人,每隔一周,相互交流编程问题。花10 ~ 15分钟来尝试解决这些问题,再用10 ~ 15分钟进行讨论(无论能否解决)。
12.当你听到任何你一时之间也无法解决的面试问题时,赶紧回到你的座位上,把这个问题用电子邮件发给自己,以留作日后的提醒。在那一周里找出点时间,用自己最喜欢的编程语言来解决它。
我之所以喜欢Steve开出的这个清单,是因为它看上去很全面。有些程序员一想到“锻炼”,总认为就是一些编码上的难题。但在我看来,编程更在于人,而不是代码。因此,通过解决世上所有的、并且晦涩的编程面试题目,在提高你的个人能力方面,这种方法是有局限的。
关于“努力的学习”,我也很喜欢Peter Norvig在“Teach Yourself Programming in TenYears”(花10年时间自学编程)一文中提出的诸多建议:
1.与别的程序员交流。读别人的代码。这比任何书籍或培训课程都更重要。
2.动手写程序!最好的学习方法就是边做边学。
3.在本科或研究生的课程中学习编程课程。
4.找一些项目来做,并且需要与其他程序员形成团队来合作。在项目的进行过程中,学会辨别最出色的程序员以及最糟糕的程序员。
5.在项目中跟随别的程序员一起工作,了解如何维护那些不是你写的代码,并且学习如何写出利于他人维护的代码。
6.学习多种不同的编程语言,特别是那些与你现在所熟悉的语言有着不同的世界观和编程模型的。
7.了解硬件对软件的影响。知道你的电脑执行一条指令需要多少时间,从内存中取出一个字(在有缓存或没缓存的情况下)需要多少时间,在以太网(或者因特网)上传输数据需要多少时间,从磁盘中读取连续的数据或者在磁盘上跳转到另一个位置需要多少时间,等等。
你还可以从Dave Thomas的21种实用的编码套路中获取灵感(CodeKata.com),或者你更愿意加入一个你家当地的“编程武馆”(CodingDojo.org)。
对于“努力的学习”,我无法像Steve,Peter或者Dave那样提供一个长长的建议列表。我远不如他们有耐心。实际上,在我看来,“编程套路”只需两个招式:
1.写博客。我在2004年初创办了CodingHorror.com博客,作为我自己努力学习的一种形式。它在一开始很不起眼,到后来成为我职业生涯中做过的最重要的一件事。所以,你也应该写博客。最后“闻达于天下”的人,往往就是那些能够有效书写和沟通的人。他们的声音最响亮,是他们在制定游戏规则,并且引领世界的潮流。
2.积极参与着名的开源项目。所有的高谈阔论听起来都很好,但是,你是一个大话王还是一名实干家呢?别光说不练,这个非常重要,因为人们会用你的行动来衡量你,而不是你的言论。努力在公众面前留下些实实在在有用的东西吧,到时候你就可以说,“我在那个项目中出过力。”
当你能编写精彩的代码、并且能用精彩的言辞向世人解释那些代码时,到那时候,我会觉得你已经掌握了最牛的编码套路!
文章来自简书

Ⅱ 学习Python编程都有哪些挑战

1.工作环境的设置


设置Python工作环境以满足基本的编程需求,恐怕是初学者在使用Python时碰到过的最典型、最具挑战性的问题。一旦Python环境未能被合理地设置,初学者不但无法顺利地完成安装,而且会在编程和使用过程中屡受挫败,甚至失去学习的动力。


2.学会重要函数


每种编程语言,除了一些通用的函数功能之外,总有一些自带的实现方法。Python也不例外。它通过lambda、map、以及filter等函数,来辅助实现应用的某些特定功能。对于初学者而言,这些既是难点,又是需要吃透和掌握的地方。只有学会善用它们,我们才能避免重复制造“轮子”,减少犯错的可能性。


3.调试代码


刚接触Python和编程的人通常会对它的语法望而生畏,也可能会犯一些语法上的错误。不过,随着用户知识和经验的积累,此类错误会逐渐减少。常言道:“要在游泳中学会游泳”。作为积累的一个重要环节,初学者可以通过对目标代码的反复调试,来逐步修正各种小错误,进而提高程序的实现效率。

Ⅲ 涓鏂囩紪绋嬬洰鍓嶉溃涓寸殑闅鹃樻槸浠涔堬纴浣犳湁鍝浜涘缓璁锛

鎴戣夊缑链澶х殑闅鹃樻槸鎶链姘村钩杩樻病链夎揪鍒板惂銆

姣忎竴涓缂栫▼鍦ㄥ彂灞曡繃绋嬩腑閮戒细阆囧埌闅鹃桦拰鐡堕堟湡銆


涓鏂囩紪绋嬬殑姒傛嫭

鎴戜滑鍏堟潵绉戞櫘涓嬩腑鏂囩紪绋嬬殑镒忔濓纴涓鏂囩紪绋嬫槸楂樼骇璁$畻链鸿瑷绋嫔簭涓浠讳綍镙囱瘑閮藉彲浣跨敤涓鏂囧瓧銆佽瘝銆佽瘝缁勫拰鍙ュ瓙镄勮瑷鏂囨硶锛浣跨敤杩欑嶈瑷缂栧啓镄勭▼搴忕殑杩囩▼灏辨槸涓鏂囩紪绋嬨备腑鏂囩紪绋嬫妧链鍏抽敭涓嶆槸绠鍗旷▼搴忕紪鍐欐眽瀛楁爣璇嗕娇鐢锛岃屾槸绋嫔簭浠g爜镄勭紪璇戞妧链蹇呴’镊宸辨帉鎻★纴缂栫▼涓庣紪璇戝繀椤讳簰涓虹粺涓鍙戝𪾢銆

镐昏堪

姣忎釜浜嬬墿瀛桦湪閮芥湁瀹冨瓨鍦ㄧ殑鐞嗙敱锛屼篃閮芥湁姝e弽闱锛屾湁浼樼偣灏辨槸缂虹偣锛屾湁缂虹偣灏辩Н鏋佹敾鍏嫔氨濂斤纴涓嶈繃闂ㄥ栨眽涓嶆哕镄勫氨鐪嬬潃灏卞ソ锛岃╀笓涓氱殑浜哄幓锅氢笓涓氱殑浜嫔効銆

Ⅳ 有什么好的编程问题网站推荐

一个好的网站推荐是Stack Overflow。

Stack Overflow是一个专门为程序员和软件开发人员设计的问答网站。它拥有庞大的用户群体和丰富的知识库,涵盖了各种编程语言和开发技术。这个网站的特点在于其高质量的问题和答案,许多问题都是由经验丰富的开发者提出的,而答案则是由他们提供的经过验证的解决方案。

使用Stack Overflow可以解决很多编程中遇到的问题。当你在开发过程中遇到难题时,可以在这个网站上搜索相关的问题和答案。通常,你可以找到其他人遇到并解决了同样问题的例子,从而快速找到解决方案。此外,你还可以向社区提问,其他开发者会积极回答并提供帮助。这种互助精神使得Stack Overflow成为了一个非常活跃和有用的社区。

除了编程问题,Stack Overflow还提供了一些其他有用的功能。例如,它有一个标签系统,可以帮助你浏览和查找感兴趣的主题。此外,它还有一个排名系统,根据问题的质量和受欢迎程度对问题和答案进行排序。这使得你可以更容易地找到最有价值的内容。

总的来说,Stack Overflow是一个非常好用的网站,对于程序员和软件开发人员来说尤其如此。它提供了一个平台,让开发者可以相互学习、分享知识和解决问题。无论你是初学者还是经验丰富的开发者,都可以从这个网站中受益匪浅。

Ⅳ 编程究竟难在哪

1. 难在思路的构建

你学了很多语法,很多 API,但是当给你一个实际问题,让你通过编程实现,不是简单地罗列 API 即可完成,而是需要你对问题进行分析,理清解决问题的逻辑,然后再通过各种算法、数据结构和 API 等进行编程实现。

2. 做出来容易,做好难

当你解决了思路构建的难点,解决了一个问题,但是你是否使用的最好的方法,这就是所谓的做出来容易,做好难。

写的程序能够解决问题且没有 bug 是基本要求。这里的做好不是指功能正确,而是写的程序容易理解,能够很容易让其他接手的程序员(水平不差)看懂为什么这么写。

正确是现在怎么写不会挖坑害将来的人,现在怎么写能让别人1年后看你代码时候不可能理解错你现在的意图,现在怎么写能在别人将来犯错的时候提示他你错了。

编程是给未来的未知人讲故事,你无法知道将来这个人是谁,他都懂什么,他经历过什么,这个系统将来已经是什么样子了。我们需要在这种无知,缺乏信息的情况下做决定,从千万种把这件事做出来的方法里,选出你觉得最能把这个故事给讲好的那种方式,把故事写下来。

编程是一种沟通,用程序跨越时空之沟通则是一门属于程序员的特有的艺术 —— 阿莱克西斯
3. 规范性好,有良好的可扩展性

并且程序的可扩展性,规范性高,后期维护难度小。整体功能实现的过程中,各种情况考虑规范。其实学习编程和学习其他内容一样,没有什么太大差别。心态放好,用对方法,你就能够学好。重要的是学知识的人是什么样子,而不是学的是什么。

在这给你一些学习编程的建议,希望对你有用。

1. 让编程成为一个习惯
想要培养一项技能的最好的办法,就是将他融入到我们的生活并成为我们的爱好。其实说白了,就是让这个爱好成为一个习惯,一天不去做这件事情,都会觉得少了什么。在不知不觉中,这个习惯会像滚雪球一样积累起来。

对我来说,养成这种习惯首先就是要对“拖延症”说不。比如,你想锻炼下自己的写作能力时,但是没有好看的本子,没有好的灵感,没有安静的环境....总之就是找各种理由一拖再拖,最后就不了了之了。

为自己设定一下,每周拿出几天,每天拿出几个小时,编程学习就这样慢慢步入正轨。

2. 将每天的学习过程拆分成小块
对待编程学习,我们没必要像健身狂人那样一口气做到筋疲力尽。与其直接编程2小时,我们完全可以先做40分钟、然后休息5分钟,整个过程重复4次。很明显。

热点内容
动态规划01背包算法 发布:2024-11-05 22:17:40 浏览:847
nasm编译器如何安装 发布:2024-11-05 22:01:13 浏览:177
登录密码在微信的哪里 发布:2024-11-05 22:00:29 浏览:737
c防止反编译工具 发布:2024-11-05 21:56:14 浏览:244
安卓虚拟机怎么用 发布:2024-11-05 21:52:48 浏览:342
php时间搜索 发布:2024-11-05 20:58:36 浏览:478
燕山大学编译原理期末考试题 发布:2024-11-05 20:13:54 浏览:527
华为电脑出现临时服务器 发布:2024-11-05 20:05:08 浏览:407
斗战神免费挖矿脚本 发布:2024-11-05 19:53:25 浏览:664
网吧服务器分别是什么 发布:2024-11-05 19:45:32 浏览:391