草庐IT

编程教会我的5个生活信条

python大数据分析 2023-10-11 原文

1、不要等准备好了再出发,优秀的程序员都是“探路者”

我见过不少程序员不敢尝试新技术,空有好的idea却从不去实施。他们不是懒,而是“完美主义”,永远解释自己能力不够、没想好、准备中...

编程的经历让我发现,只要你开始疯狂敲代码,会不断蹦出新点子,很多问题也会迎刃而解。因为编程的过程中,你会不自觉地去思考逻辑、检索资料、咨询大佬、反复纠错校验,最后发现做出来的东西居然有模有样。

一旦你想法太多,始终在起跑线上观望,会陷入“完美主义”的陷阱,久而久之就成了拖延症晚期。拿学Python来说,其实语法并不难,但很多人死在了安装Python软件上,觉得各种麻烦、复杂,怀疑自己搞不定。也就一直处于“我对Python念念不已,Python对我爱答不理”的状态。

《黑客与与画家》书里说:你把整个程序想清楚的时间点,应该在编写代码的同时,而不是在编写代码之前,这与作家、画家和建筑师的做法完全一样。

相信程序员都会有体验,你不可能每个功能都完美设计好,才开始写代码。

电影《饮食男女》也讲到:人生不像做菜,不能等一切都准备好了才下锅。

确实这么个道理。

2、很多事都是孰能生巧,没有足够多练习不要提天赋

编程应该是最能体验prctice make perfect的技能之一,在前期积累的阶段,往往要大量的去刷题、比赛、模仿,才能显得游刃有余。

资深码农就像是老师傅,哪个不是键盘敲到发白。

可能练习不一定会让你完美,但大量的练习会让你产生髓磷脂,一种神经元外侧的脂质,能让你的脑回路更加灵活。

人的大脑可以分为反射、思考、记忆三个功能,大脑可以通过大量的反复练习让思考演变成习惯,最后跳过思考只需要反射的指令操控就能完成,从而达到“生巧”的效果。

当然作为程序员,练习不是一味的重复,或者去完全复刻别人的代码,每一次练习都应该增加难度,有突破自己认知的成长。这样经过反复的输入、评估、输出、纠正,你会有惊人的变化。

当然练习不光是程序员需要做的事,几乎任何能力的修炼都离不开反复练习。

3、要有良好的习惯,才能事半功倍

编程是一项系统工程,就和写小说、建大厦一样,所以需要有模式、规矩、条理,才能不至于变成“屎山”。建议大家在写一个程序之前,可以用脑图软件理一下思路,也可以用伪代码提炼核心逻辑。

还有比如说规范代码命名、规范注释、模块化、版本控制、注意备份等等,都是需要养成的好习惯。

我非常喜欢Python编程的理念,尽量写符合Python习惯的代码,它在Python之禅里解释道:

优美胜于丑陋(Python 以编写优美的代码为目标)

明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)

简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)

复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)

扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)

间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)

可读性很重要(优美的代码是可读的)

即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)

不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)

当存在多种可能,不要尝试去猜测

而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)

虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )

做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)

如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)

命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)

写代码需要好习惯,对个人学习、工作来说更需要。

你看看高中班里那些拔尖考名校的同学,基本都是上课认真听、考试不粗心,在同一个班里智商差异不明显的前提下,拉开差距的都是学习习惯。

我一个前同事,有个习惯非常让我佩服,他每次演讲PPT前,都要花一两天时间给每一页做备注,然后写演讲稿,在家不断练习。

这其实是一种习惯的养成,既然他在演讲PPT上这般用心,其他工作必然不会差。

4、最简单的往往是最有效的

很多人喜欢把简单的事复杂化,比如说一个线性回归能解决的事,非要用神经网络,浪费大量机器资源,跑出来的效果也不好。其实在编程领域,往往简单胜于复杂。

Python提倡一个函数只做一件事,一件事只有最好的一种解决方法,这其实就是把复杂问题简单化。

当然这里的简单不是幼稚、容易,而是最优解法,并且尽可能让更多人看懂。

5、愚者困惑,智者提问

如果你是程序员,会发现有大量的技术网站和博客,比如stackoverflow、csdn、博客园、github、掘金等等,似乎程序员比其他行业更需要交流和分享。

编程教给我最好的学习方法就是提问和搜索,遇到bug我可以百度、谷歌,肯定有现成的答案等着你,因为你遇到的难题前人基本都遇到过,并且绝大多数都给出了答案。

所以对一个初学代码的新手来说,千万不要买本书、看门课就ok了,其实学会提问和搜索才是你编程生涯的开始。

说到学会提问和搜索,有些人会疑惑这也要学嘛?

那是当然,会提问题代表你知道自己不懂什么,并且能准确的描述出来,会搜索代表你知道在哪找答案,并且能识别答案的真伪。

愚者困惑,智者提问。对每一个人都是真理。

有关编程教会我的5个生活信条的更多相关文章

  1. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  2. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  3. ruby - 我可以将我的 README.textile 以正确的格式放入我的 RDoc 中吗? - 2

    我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:

  4. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  5. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  6. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  7. ruby-on-rails - 测试我的 Ruby gem:Shoulda::Matchers:Module (NoMethodError) 的未定义方法 `configure' - 2

    我正在开发我的第一个Rubygem,并捆绑了cucumber、rspec和shoulda-matches进行测试。当我运行rspec时,出现以下错误:/app/my_gem/spec/spec_helper.rb:6:in`':undefinedmethod`configure'forShoulda::Matchers:Module(NoMethodError)这是我的gem规范:#my_gem.gemspec...Gem::Specification.newdo|spec|......spec.add_development_dependency"activemodel"spec.a

  8. ruby-on-rails - Heroku 吃掉了我的自定义 HTTP header - 2

    我正在使用Heroku(heroku.com)来部署我的Rails应用程序,并且正在构建一个iPhone客户端来与之交互。我的目的是将手机的唯一设备标识符作为HTTPheader传递给应用程序以进行身份​​验证。当我在本地测试时,我的header通过得很好,但在Heroku上它似乎去掉了我的自定义header。我用ruby​​脚本验证:url=URI.parse('http://#{myapp}.heroku.com/')#url=URI.parse('http://localhost:3000/')req=Net::HTTP::Post.new(url.path)#boguspara

  9. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  10. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

随机推荐