[阶段小结]非技术人员的编程学习折腾记

2024-06-07 13:32

本文主要是介绍[阶段小结]非技术人员的编程学习折腾记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  之前很长的岁月里,一直都觉得程序员既可怜又厉害,面对如此枯燥无聊的东西,居然还干起了职业...有些人还进化成了黑客这种生物,真是匪夷所思。直到自己在公司IT同事的指引下(非常谢谢他们!),慢慢开始了解编程,越发觉得沉迷其中太合乎情理了。P.S.其实工作中遇到的很多程序员还是没那么痴迷程序的,可能成了本职工作后,心态上疲劳吧。然而当我把它作为兴趣之后,就真的上瘾了。编程于现在的我,就如同游戏于儿时的我。有时觉得需要戒一下,毕竟自己的生活还有很多方面要顾及到。

  现在是2014年的夏天,我接触程序是从2012年夏天开始的。由于工作和考试的原因每年只能有4个月里面的业余时间能弄一下编程。

  自己目前认真看下来以及做过课后题目的书只有两本。C primer plus和A practical guide to ubuntu linux(基础篇)。工作上涉及到IT知识也不多,当然我有公司数据库用户的使用权限,好歹又稍微好一些。这里你也就看到了,本人的功力是比纸还薄的,编程的道路漫长没有尽头,我知道我将倒在路上,只盼那时离我启程的地方可以远一点,因为我想看到尽可能多的风景。

  我个人学习编程的路线是先因为工作需要自学了SQL各类查询语法和技巧,觉得挺有意思。接下来工作里面数据常出错,我的工作需要和IT打交道,讨论出错的原因,了解到了数据类型等等基本的概念。然后一个好心的IT同事(真要谢谢乔瑞)跟我多聊了聊编程,告诉我其实没那么难,建议我看看C语言,我就真的去了,一篇How to think like a computer scientist C语言版的文章(才两百多页,不好意思说自己看的这叫书)。然后找了个在线编程网,动手操作了一下。好了,上瘾了。

  经过google民意调查后,我买了C primer plus,真的好书,我这里也再推一下它。数据和语法基础知识,底层电脑运作原理,Win系统/Unix系统,简单算法,数据结构之间环环相扣,涉及面广,思路清晰,由浅入深。题目不简单,尽量自己做,但是真的不会了,有答案参考。这本书是值得你放着,时不时拿出来翻阅的,千金难买回头看,别以为看完做完题,就都是你的了。看完做完题是帮助你熟悉,为了以后再捡起来方便。

  整完了这本书之后,我自学过算法,但是失败了。除了简单的sorting还搞得定,接下来的各种算法就很迷茫了,对于算法,我的智力层面还是达不够,越看越枯燥,越看越吃力。我用的算法书是Algorithms in C,但是认真学过,总是会有些收益的。后面我会讲一下我觉得舒服的C语言学习方式,仅代表个人意见。

  学习算法期间的另一条并列线是逛C语言论坛,我那水平你懂的,只有潜深水的份。有事没事run一下大家贴出的程序,自己试编一下大家贴出的题目。我也有自己的showtime,比如独立想出个把道稍有难度的题目的解法,也会贴出来展示下,还会把这些自己想出来的东西保存起来...当然只能自己看看,要是往这儿一贴,怕读者们笑掉大牙。就这样漫无目的的论坛生涯一阵以后,我和Ubuntu邂逅了。

  一开始去接触Ubuntu就是为了C,逛国外论坛的时候,看到里面的前辈建议学习C语言的同学们还是去接触下Linux。那时(包括现在)网上比较流行的免费版就是Ubuntu,有图形界面哦!这对一只菜菜鸟是很重要的,如果只是命令行,则容易让人望而怯步。我用光盘安装到了自己的老电脑里面(本人电脑08年入手用到现在...),各种倒腾Linux shell命令。然后就学会了在Linux下编C的程序,学会了使用和编译简单一些的makefile,接触到了vim, gdb。在win下面的话,一个VC 6.0就够了,没有那么多事儿。所以也有人说学C用Linux是分心的,我觉得也有道理。

  会去看A practical guide to ubuntu Linux是因为在论坛闲逛的时候,了解到Linux/GNU的透明度,以及C语言和Linux/GNU的亲密关系,自己YY出学Linux操作平台的知识一定会回馈到C语言知识。就这样开始去学了,这次没买书,是找的免费下载。学完基础部分说下感想,没有学习完C primer plus 那么爽的感觉。但是我知道是有用的。它确实是侧重practical,也让我进一步了解了这个系统。但是印象深刻度一般,主要也是因为,我对机器语言逻辑研究太浅很多东西肯定看过了也没理解到位。此书总共一千多页,英文原著其实就一本,中文切割成了基础篇和管理篇。接下来关于服务器, TCP/IP 等知识打算放一放。还是想致力于基础,通过利用C语言来了解电脑逻辑,不想学杂了,而且没必要刻意去学那么多程序语言的,除非是工作里面要用。

下面来记录一下,短短的使用期间的两起大型事故...

1. 升级系统的时候,给我亲娘直接拔了电源啊,开机后选完ubuntu后,黑屏。这里简短说下解决方法,如果你的电脑可以在开机时候选择ubuntu高级选项,来到历史各种内核选项,选一个最新的好了,进去以后是只有命令行的,命令行下用升级ubuntu内核命令,一定是升级内核的命令啊,就可以搞定。当中应该还有啥曲折,但不重要,这是大体的维修思路。

2.托practical guide福,去弄xserver的命令搞远程桌面控制...一个电脑盲去整这么高大上的东西干嘛,就如同一个几近文盲的人,硬要让自己去研究文学。P.S.整个网络里面就我一个人在用Linux,也不知道其他的机子...所以又一次杯具了。从xserver里面退出来以后,关机。再打开,进入了传说中的登录界面死循环。症状:输入用户名密码,它还让你输...网上有解决的方法,我也不贴了。等我解决这个问题(过程中中打了很多不懂的命令去终端运行)以后,我再登录到图形界面,我的任务栏,文件夹(因为桌面还在有文件夹)打开后的菜单栏,状态栏,都没啦。我好不容易用ctrl+L 去到/etc/里面搜出gnome-termial(终端),接着又是一通胡来,装了个KDE妄图解决这问题,结果以失败告终。一直到知道 unity reset这回事(unity reset可不是命令,别往终端里打哟...),才根本上解决了这个问题。这件小事也说明了一个道理,不分析问题的原因就把可以搜到的解决方式都用上是及其弱智和危险的一种做法,其实我根本不用装kde的,我只是在解决前一个问题的时候,输入了某种命令使我的nautilus(窗口管理器), panel(gnome任务栏)全部关闭了。至此闹剧结束。为了KDE,硬盘又被耗去了500+M的空间。接下来就是卸载KDE,其实我到现在都不确定有没有卸载干净,喵~。我用的卸载方式是走图形界面的,命令行网上也有,我功力有限,也怕再整出点幺蛾子。最后采用了synaptic+ubuntuTweak+删除隐藏文件.kde 的方法卸载掉了kde. 具体的就不贴了,都是可以搜到的。菜鸟们如果看到了,可以尝试用一下这个思路,先救救急。等以后咱水平上去了再用高端命令行方法吧。当你对所用命令不了解的时候,用命令行会比较有风险。

  前段时间,刚刚开动Fundamentals of Data Structures in C。这里回到前面学习C语言的话题。其实真要说来,同学,如果你也是从C primer plus 走过来的,那么学这本还是合适的。它正好承接上了C primer plus的内容。目前我也才开始看,只能说这个评价主要来源直觉。

  呵呵,都是茶余饭后的扯淡,就到这里了。我又要告别计算机知识一段时间了。



这篇关于[阶段小结]非技术人员的编程学习折腾记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1039316

相关文章

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Flutter打包APK的几种方式小结

《Flutter打包APK的几种方式小结》Flutter打包不同于RN,Flutter可以在AndroidStudio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式,通... 目录前言1. android原生打包APK方式2. Flutter通过原生工程打包方式3. Futte

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Ollama Python 使用小结

《OllamaPython使用小结》Ollama提供了PythonSDK,使得开发者能够在Python环境中轻松集成和使用本地运行的模型进行自然语言处理任务,具有一定的参考价值,感兴趣的可以了解一... 目录安装 python SDK启动本地服务使用 Ollama 的 Python SDK 进行推理自定义客

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制