linux下c语言编程书籍_如何在没有书籍和教程的情况下学习新的编程语言

linux下c语言编程书籍

Technology keeps changing at a fast pace. We need to catch the speed. Otherwise, our skills will be obsolete. So, as a professional, we need strategies to cope up in this changing scenario. Fast learning capability can be a big savior in this case.

技术日新月异。 我们需要赶上速度。 否则,我们的技能将过时。 因此,作为专业人士,我们需要策略来应对这种不断变化的情况。 在这种情况下,快速学习能力可以成为一个重要的救星。

I learned the R package and SPSS while I was in university. During my research tenure, I had to learn MATLAB. I had some knowledge of C programming too. But I had never encountered Python. It was like an alien programming language to me until five years back.

我上大学时就学习了R包和SPSS。 在研究期间,我必须学习MATLAB。 我也有一些C编程知识。 但是我从未遇到过Python。 直到五年前,这对我来说就像是一种外来的编程语言。

I had the impression that Python is more suitable for professionals from a hardcore programming background. It was not my cup of tea.

我的印象是,Python更适合具有硬核编程背景的专业人员。 那不是我的茶。

When I started my journey as a data scientist, I used to work with R and Excel. Taking data files in Excel CSV (Comma Separated Value) format, I used to import them in the R package for analysis. Once the analysis is done, I would again export those results in the form of CSV files. I would do some post-processing in Excel to make it understandable for the business users.

当我开始作为数据科学家的旅程时,我曾经使用R和Excel。 以Excel CSV(逗号分隔值)格式获取数据文件时,我曾经将它们导入R包中进行分析。 分析完成后,我将再次以CSV文件的形式导出这些结果。 我将在Excel中进行一些后期处理,以使业务用户可以理解它。

But the situation changed after a few years. I was facing challenges for increased data volume. It required me to read data from an S3 location in AWS from multiple CSV files in sequence. I could not do it using R. The process was breaking after a few iterations. Then one of my colleagues suggested me to try Python out. I was very skeptical about using an entirely new scripting language. But I gave it a shot.

但是几年后情况发生了变化。 我面临着增加数据量的挑战。 它要求我从多个CSV文件中依次读取AWS中S3位置的数据。 我无法使用R做到这一点。经过几次迭代,过程中断了。 然后我的一位同事建议我尝试使用Python。 我对使用全新的脚本语言持怀疑态度。 但是我试了一下。

At first, I was worried about how to learn Python. I searched for some books on the web. Downloaded some. Looked for tutorials on Python scripting. Found some good ones on YouTube. When I started going through them I realized that it’s not fast enough. I had to meet the deadlines for my project. I needed some strategy.

起初,我担心如何学习Python。 我在网上搜索了一些书籍。 下载了一些。 寻找有关Python脚本的教程。 在YouTube上找到了一些不错的影片。 当我开始研究它们时,我意识到它不够快。 我必须按时完成项目。 我需要一些策略。

“Make it work, make it right, make it fast.” — Kent Beck

“使它起作用,使其正确,使其快速。” 肯特·贝克

从眼前的眼前问题入手 (Start with the Immediate Problem in Hand)

I started with the first roadblock I faced. Needed to solve the problem of reading multiple data files in sequence in Python. I searched on the web for solutions. It is hard to find and identify a suitable solution for a problem in an unknown programming language. Again, my colleague helped me to find it out. There is a package boto3 in Python that helps in reading flat files from a location and import it to Python IDE (Integrated Development Environment), Jupyter notebook in my case. I had to create a loop to read all the target files in sequence and save it in the form of a single data frame in Jupyter notebook.

我从遇到的第一个障碍开始。 需要解决用Python顺序读取多个数据文件的问题。 我在网上搜索解决方案。 很难以未知的编程语言找到和识别适合问题的解决方案。 同样,我的同事帮助我找到了答案。 Python中有一个软件包boto3,该软件包可帮助从某个位置读取平面文件并将其导入到Python IDE(集成开发环境)(在我的情况下为Jupyter笔记本)中。 我必须创建一个循环以按顺序读取所有目标文件,并将其以单个数据帧的形式保存在Jupyter笔记本电脑中。

It was the first task I did using Python. It gave me a lot of confidence. I still did not know Python much. I knew only one task. Reading files from a location.

这是我使用Python完成的第一个任务。 这给了我很大的信心。 我仍然不太了解Python。 我只知道一项任务。 从某个位置读取文件。

预先计划分析步骤 (Plan for the Steps of Your Analysis in Advance)

The second thing I did is to make a rough plan of analysis for the data. I jotted down all the steps I needed to follow. Then started searching commands for each baby step. They were as simple as — printing sample data, renaming columns, checking row and column counts, and many more.

我要做的第二件事是对数据进行粗略的计划。 我记下了我需要遵循的所有步骤。 然后开始为每个婴儿步骤搜索命令。 它们非常简单—打印样本数据,重命名列,检查行和列计数等等。

The analysis also involved some data aggregation and data reshaping steps. Here I faced a bit of challenge. It was difficult for me to understand and implement operations like group-by and pivot-table in a new scripting language. I was facing difficulty to figure out which operation I needed to implement to get the data in the way I wanted. I managed it for the time being. But it took a lot of time to master.

分析还涉及一些数据聚合和数据重塑步骤。 在这里,我面临一些挑战。 我很难用一种新的脚本语言来理解和实现分组方式和数据透视表之类的操作。 我面临着难以确定我需要执行哪种操作才能以所需方式获取数据的困难。 我暂时管理过。 但是要花很多时间才能掌握。

必要时寻求帮助 (Ask for Help Whenever Required)

Throughout the entire journey of learning Python, I took help from my colleague whenever necessary. It speeds up the learning and execution. But I had used it as my last resort.

在学习Python的整个过程中,我在需要时从同事那里获得了帮助。 它加快了学习和执行速度。 但是我把它作为最后的手段。

In some situations, it may not be very convenient to get help from your colleagues. There are several blogs and forums that can help you overcome your hurdle. Among them, Stackoverflow is a big savior. I believe most of the coders will agree with me. There is a high chance that the problems you are facing, has already been raised by others and solved by some anonymous angel in Stackoverflow. If your problem is somewhat unique, you can always post in Stackoverflow and get the solution. Other sources like Geeksforgeeks, Tutorialspoint, and Towardsdatascience also help from time to time.

在某些情况下,从同事那里获得帮助可能不太方便。 有几个博客和论坛可以帮助您克服障碍。 其中,Stackoverflow是一个很大的救星。 我相信大多数编码人员都会同意我的看法。 您面临的问题很有可能已经由其他人提出并由Stackoverflow中的某个匿名天使解决了。 如果您的问题有点独特,则可以随时在Stackoverflow中发布并获取解决方案。 Geeksforgeeks ,T utorialspoint和T owardsdatascience等其他来源也有时会提供帮助。

So, effectively there are three ways you can ask for help:

因此,实际上,您可以通过三种方式寻求帮助:

  1. Ask your friends or colleagues.

    问问你的朋友或同事。

2. Find loads of existing codes in the Stackoverflow, Github, Towardsdatascience, and other similar sources.

2.在Stackoverflow,Github,Towardsdatascience和其他类似资源中查找现有代码的负载。

3. Post your query in Stackoverflow and get the answer.

3.在Stackoverflow中发布您的查询并获得答案。

尝试避免在不了解的情况下从Web复制代码 (Try to Avoid Copying Codes from the Web without Understanding It)

Many times I faced a situation where I needed to reshape or transform the data in such a manner that it was beyond my expertise. I had to search for solutions on the web. In the beginning, I copied code from the web if it was suitable for my problem. But later I realized that it does not help my learning.

很多时候,我面临着需要以超出我的专业知识的方式来重塑或转换数据的情况。 我不得不在网上搜索解决方案。 一开始,如果适合我的问题,我从网上复制了代码。 但是后来我意识到这对我的学习没有帮助。

So I changed my way. I started to remember the code snippet and rewrite it on my code editor. It helped me remember the Syntax.

所以我改变了方式。 我开始记起代码片段,并在我的代码编辑器中将其重写。 它帮助我记住了语法。

When I became a bit familiar with the Syntax, I started putting in my effort to understand whenever I found any nicely written script. Once I understood the piece, I tried to reproduce it. It helped me immensely to grow my coding skill.

当我对语法有了一点熟悉时,我便开始努力去理解每当发现任何写得很好的脚本时。 一旦理解了这件作品,我便试图对其进行复制。 它极大地帮助了我提高编码能力。

So follow these four steps whenever you copy any scripts from the web:

因此,每当您从网上复制任何脚本时,请遵循以下四个步骤:

  1. Break it into small segments and see the output after execution.

    将其分成小段,执行后查看输出。

2. Reassemble it yourself and check if it is producing the desired result.

2.自己重新组装并检查其是否产生所需的结果。

3. Try to remember the syntax (don’t try too hard)

3.尝试记住语法(不要太努力)

4. Once you understand the code, try to reproduce it.

4.理解代码后,请尝试复制它。

创建少量主代码书以备将来参考 (Create Few Master Code Books to Refer in Future)

Creating some master script files which will contain some of your best solutions can be a good idea. We always do some tasks which are common to multiple use cases. We can write some standard functions for those tasks and reuse them whenever required.

创建一些包含一些最佳解决方案的主脚本文件可能是一个好主意。 我们始终会执行多个用例共有的一些任务。 我们可以为这些任务编写一些标准函数,并在需要时重用它们。

Also, sometimes we create a customized script to do a specific job for a use case. It takes time to build such scripts. I save this kind of scripts for further use in other use cases with little or no modification. Especially, I save a lot of templates to create graphs, as it is ridiculous to remember all the parameters for different graphs.

另外,有时我们会创建自定义脚本来针对用例做特定的工作。 构建此类脚本需要花费时间。 我将这种脚本保存下来,以供其他使用情况使用,而无需做任何改动。 尤其是,我节省了大量模板来创建图形,因为记住不同图形的所有参数是荒谬的。

Such a standard script helped me avoid repeated web searches for codes and saved a lot of time.

这样的标准脚本帮助我避免了在网络上重复搜索代码并节省了很多时间。

While creating master codebooks, keep in mind the following three things:

在创建主码本时,请记住以下三点:

  1. Create functions for frequently used operations over several use cases. It may take some of your time, but it really helps to save a lot more.

    为几个用例上的常用操作创建函数。 这可能会花费您一些时间,但确实可以节省更多。

2. Create a codebook for saving scripts to create different charts and diagrams.

2.创建用于保存脚本的代码簿,以创建不同的图表。

3. Create end to end codebooks for tasks like EDA (Exploratory Data Analysis), Time Series Forecasting, Fitting Machine Learning models, Fitting Deep Learning models, etc.

3.为诸如EDA(探索性数据分析),时间序列预测,拟合机器学习模型,拟合深度学习模型等任务创建端到端代码簿。

始终查看占用大量时间的代码 (Always Review the Codes that Took a Considerable amount of Your Time)

When we write a script after putting in some effort, in the end, we do not always remember the entire process we have gone through. So we partially lose the scope of learning from that exercise.

最后,当我们花了些力气编写脚本时,我们并不总是记得我们经历的整个过程。 因此,我们部分失去了该练习的学习范围。

It will be very helpful If you give another look at the entire process. It will reinforce your concepts and logical understanding. Then only it will properly benefit your learning process.

如果您再看一下整个过程,这将非常有帮助。 它将加强您的概念和逻辑理解。 只有这样,它才能正确地帮助您的学习过程。

敢于帮助别人 (Dare to Help Others)

The ultimate process of learning is teaching. Your learning will be incomplete until you help others learn.

学习的最终过程是教学。 在您帮助他人学习之前,您的学习将是不完整的。

While I was learning Python, I tried my best to help my colleague who was trying to learn it. It helped me nourish my knowledge. When I applied my existing knowledge to write a script for different data and from a completely different context, it reinforced my understanding and left a permanent impression in my memory.

在学习Python时,我尽力帮助尝试学习它的同事。 它帮助我养育了我的知识。 当我运用现有知识为完全不同的上下文编写不同数据的脚本时,它增强了我的理解力,并给我留下了永久的印象。

As a bonus, it boosts your confidence as a programmer. You really need it to stay motivated.

此外,它还增强了您作为程序员的信心。 您真的需要它来保持动力。

For learning any programming language, the basic thing you require is to understand the logic and keep your mind open. Temporarily, you need to forget what you have learned from other programming languages. Give it a fresh start. Once you get the essence of it, then compare it with your previously known languages. Then your task will be much easier. Your fear of adoption will be gone.

要学习任何编程语言,您需要的基本知识是理解逻辑并保持开放的态度。 暂时,您需要忘记从其他编程语言中学到的知识。 重新开始。 一旦掌握了它的实质,就可以将其与以前已知的语言进行比较。 然后,您的任务将容易得多。 您对收养的恐惧将消失。

“Sometimes it pays to stay in bed on Monday, rather than spending the rest of the week debugging Monday’s code.” — Dan Salomon

“有时候在星期一睡觉是值得的,而不是花一周的剩余时间调试星期一的代码。” —丹·所罗门(Dan Salomon)

翻译自: https://medium.com/swlh/how-to-learn-new-programming-language-with-no-books-and-tutorials-862e8cf77d8f

linux下c语言编程书籍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值