热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

学习程序设计语言到底学的是什么?

学习程序设计语言到底学的是什么?经常在网上看到人们讨论语言的优劣,自然语言的各大门派之间口水,唾沫横飞。我并不是不赞成你们争论语言的优劣

 学习程序设计语言到底学的是什么?

经常在网上看到人们讨论语言的优劣,自然语言的各大门派之间口水,唾沫横飞。我并不是不赞成你们争论语言的优劣,只是觉得很多时候很多人争论得确实没有什么水平,这样给很多刚入门的或者还没有入门的计算机程序爱好者很多误导,而且这个包袱一般会在他们身上压很多年,有些人甚至一辈子都没有丢下这个包袱。这就造成的后果之严重几乎不敢想象。完全造成很多东西的片面的认识,自然学习的时候也是偏离轨道的。时光的宝贵我不解释,我想每个人都不希望将时间浪费在那些没有意义的事情上。今天我在此“胡乱造谣,希望这个谣言可以传播的很远很深,并且得到每一位听者的认同和思考”。

  

本来想长篇大论的。可是感觉写太多怕自己写着写着就不知道自己在写什么了。所以就决定直奔主题。我想当我把这些说完了,其他的疑问就自然不攻自破了。这就是我们的主题是:我们学语言学的是什么?我觉得我们学习任何一门语言应该学习这三种东西,一,语言的哲学。二,程序设计艺术。三,行业技术。广义上学习语言把握这三根命脉足以。其实还有侠义上的。暂时不说。下面我粗略的解释下。(下面的内容几乎没有举一个例子,只是觉得自己不是大师,没有能力将这些东西用实例说得清楚明了。也不是卖什么关子。当然你说我是在这玩些虚虚实实的东西,故弄玄虚我觉得没什么,本来很多东西就是仁者见仁,智者见智。我在此只是说些自己的想法和大家交流。因为我热爱思考,并且我相信热爱思考的人和真理的距离是最近的。)

 

一,语言的哲学

 

记住一句话几乎所以的东西都是在某种特定的环境下应运而生的(也就是说没有什么东西凭空而降的)。我们的语言也不例外。我们的语言也是在某种特定的需求下产生的。我敢肯定不是计算机科学家抽风在家无聊而设计一种程序设计语言来玩的。就算是这样,这里也有一个需求“为了打发无聊的时间,玩一下?”(呵呵,,这是开玩笑的。)首先我相信每一种语言的创始人肯定都一等一等的大师。这点我们不应该去怀疑。他们在起初酝酿设计一个新的语言的时候,肯定是由于某种原因(我们说是基于某中需求)下才有了这么个想法,他觉得应该有这么一门怎样怎样的语言。可以让我们什么什么工作可以更好的开展,或者让什么更容易实现,或者是让我们的世界更炫更酷。大师们的脑海了面出现很多画面,这门语言(他想创造的语言)应该怎样怎样?于是开始了工作。实现自己这个伟大的计划。那么好。语言的轮廓就开始慢慢的清晰了。大师每天思考这里应该怎样?怎样才更好。这个功能要不要?不过我们要注意一点语言产生的更本需求是语言的主哲学。语言从前到后几乎都是围绕着这个哲学(某种需求)建造。至于每一个东西都是要实现,那么在具体的实现中会碰到各种各样的问题。这时候我们的语言衍生出很多很多的小哲学。我觉得现在很多人有一个毛病:很容易接受一样东西。我并不是说他学习的能力有多么多么的强,而是从来不问或者很少问为什么的,在很多东西面前过分的坦然。我想我们要做到的是尽可能多的认识到语言的每一个动作和细节产生的原因和用途。多问什么?为什么当初大师创造这么些东西呢?这样有什么好处和弊端?我们应该注意些什么呢?或者说为什么原来在某某语言的特性为什么在这种新的语言没有了?有着苏格拉底式的问或者反问的精神。其实当你在思考这些问题的时候,你就开始慢慢的和语言的哲学靠近。当我们真正的弄懂了这些问题的时候。我们基本上可以这么定义你上了一层次了。我们学习语言真的不是简简单单的学习那些粗浅的语法。我们不仅要学会用,还要用得明白,知其然还要知其所以然。我们应该抱着一个十万个为什么的心态?敢问!!!敢想!!!其实很多时候就是我们通常所说的“懂原理”。这就是为什么别人在推荐书的时候总是推荐那些大师的作品,因为他们书的字里行间都透漏着语言的哲学。解释很多看似你或许不需要掌握也可以的东西。当然不同的语言有不同的哲学,那我们是不是要学习所有的语言呢?当然不需要,一是我们的精力本身的限制,二是很多语言是有很多相近的哲学,因为语言本身都是在相互的学习和进步。别看今天某种语言的流行和优雅,都是因为吸取了很多前辈语言的很多哲学才有他的今天。在我的心中一个程序员这一生至少要学习三种类型的语言:1,学习一种面向过程编程的语言;2,学习一种面向对象的语言;3,学习一种脚本语言。(之所以选择这三门语言是这三种语言之间哲学的不相同点比较多。相对而言的。当然这三种类型并不是严格的三种不同的类型,我的意思是某种语言可能是面向对象的语言又是一种脚本语言)。并且争取学习都不仅仅停留在语法方面,更多的是体会语言背后的哲学。至于有些人只会一门语言的人但还是怎么怎么厉害?我不想反驳。我想你看完了,也许还是会明白的。

 

二,程序设计艺术

 

我这里不是讨论程序设计艺术的含义,所以我先声明我在文章所指的意思。程序设计艺术:抽象现实世界的问题,用计算机程序表示并尽可能优美的解决它的能力。这种能力有多么重要,不用多说了。我也不想多说什么,基础这一块我们要学好数据结构和算法分析。其次就是多思考多实践,敢想,敢实现,敢创新。让自己的方法尽可能的优美和优雅。切记不要天天“Hello World!!!”。还有更多的就不解释了。

 

三,行业技术

 

我们在第一条就聊到了任何一门语言都是在某种需求下产生的。那么也就决定了语言都有特定应用的行业,我们还要做的就是深入的了解和认识这相关的行业。积累这个行业所需要的各种技术。

 

   当然我们可能不是什么时候都有条件?比如说你是个学生,你可能在接触应用到行业的技术比较少,那么我们加强我们前面两条的学习。其实就够。当然有机会最好尽可能的接触行业知识,这样真强实战估计更能让我们理会其中的奥妙。但是我还是希望作为学生时代的同学们前两项是必须要努力做到的。切不可急于应用而舍本逐末。

 

   如果我们学好了语言的哲学我们不怕语言的跟替,因为我们学会更多的是一种思想,而很多时候我们需要转变的只是表达方式。如果我们学会了程序设计的艺术,那么我们掌握解决问题的能力,那就是有能力,我还需要怕什么。做到这两点我们基本上就做到了手中有剑,心中有剑(因人而异)。最后我需要做的就是加深自己在所在行业知识就可以游刃有余了。切记勿走马观花,学的种类很多就是没有一门精通的。因为我坚信很多东西如果你没有到达一定的深度,他什么也不能带给你,最多增加你嘴边的说辞而已而很多时候技术又不是生活,仅仅了解是绝对不够的。好了,我也唠叨完了,最后祝福所有程序猿!谢谢你们为改变世界而每天努力的工作和熬夜!!!!!!(最后一句虽然明知有语病,但我恳请让我这么表达。)


推荐阅读
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 深入解析:阿里实战 SpringCloud 微服务架构与应用
    本文将详细介绍 SpringCloud 在微服务架构中的应用,涵盖入门、实战和案例分析。通过丰富的代码示例和实际项目经验,帮助读者全面掌握 SpringCloud 的核心技术和最佳实践。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Søren Kierkegaard famously stated that life can only be understood in retrospect but must be lived moving forward. This perspective delves into the intricate relationship between our lived experiences and our reflections on them. ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 堆是一种常见的数据结构,广泛应用于计算机科学领域。它通常表示为一棵完全二叉树,并可通过数组实现。堆的主要特性是每个节点的值与其父节点的值之间存在特定的关系,这使得堆在优先队列和排序算法中非常有用。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
author-avatar
永远的菜鸟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有