算法很重要,但是,并非所有,并不是每个人的选择

【信】

  何老师,你好。

我是一个软件project大二。两年下来。我有很好的成绩,此外,他自学了一些事情。大一的时候我自学C++.NET编程。然后看着别人写的炸弹人的代码自己也写了一个(感觉像是抄了一次),大二上学期的时候感觉对嵌入式开发有些兴趣,所以自学了Intel的IA-32汇编和LinuxC编程。可是我学的这些都不是非常深,特别是学LinuxC的时候。由于对操作系统不熟悉所以非常多进程方面的东西当时也没弄懂。

  如今在自学Android,学完0基础内容。打算深入学习的时候。却有师兄跟我说Android到用的时候学就能够了,平时不必花太多时间,有时间不如研究研究算法。本来我打算把《Android4 高级编程》这本书看完,然后再把Linux曾经没看懂的部分再学一遍,可是由于老师和师兄们都非常强调算法,如今我也有点迷茫,不知道究竟该干什么,不知道是不是该继续把Android学下去,完毕我的计划,还是要去研究算法(我对算法兴趣不是非常大)。

  算法真的是比其它一切都重要吗?不知道为什么身边的人仅仅是把Linux和Android这种东西当工具用,觉得不须要花时间学这些。果真如此吗?还有,我想知道一个软件project的学生应该具备什么样的知识?

【回复】

  在我看来。你在大学前两年多方的试探,这是非常不错的一种节奏(见“《逆袭大学》文摘——9.4 基础和应用的平衡中找到大学的节奏”),你能够继续依照自己的想法开展学习。

  算法在计算机科学其中是一个重要的部分,对于学习计算机类专业的学生而言,自然也是非常重要的基础。就软件开发而言。有些工作是算法密集型的,离了好算法不能做,深入学习算法是一名大学生专业能力训练的必要部分。

  然而。也有不少人将之扩大化和范化的现象。假设你已经有了自己的方向。且发现自己对算法并不算感兴趣时,算法方面的学习。做到了解,也就能够了。

在应用软件的层面,有很多其它的工作,是业务密集型(实现应用特有的业务逻辑)和体验密集型(注重用户界面和交互功能)。

这里有大量的工作要做。而软件开发不仅是写代码,包含项目管理、架构设计等非常重要的事情,并不是算法能力培养能解决。

在这样一个大行业中,即使我们就盯技术,全然能够和有必要有一大批的人。在算法之外形成自己的核心竞争力,这是特色的体现。

  所以,你能够将之前学习由于阶段性使然没有深入的部分做完,再选择一项将来值得追求的方向。更深入地学习下去。现实其中。有人死学理论,不顾应用。还往往将做应用这样一件事情看得非常低,全然是忽略了软件项目的复杂性的表现。假设在毕业前就能深入某一项技术,做这一方面的专家。我觉得是一件能够做的事情。

  假设从专业设置的角度。重算法还是重project,也许就是计算机科学与技术专业同软件project专业的差别。

而就学生个体而言,选择能够由兴趣而定。

作为软件project专业的学生。你的选择是能够的。

接下来的学习中,计算机科学、计算机组成和体系结构等方面的基础。还是要学,而自己的学习投入。在详细的技术之外,项目管理、软件project,以及人文方面知识的学习和体验。能够很多其它一些。

==================== 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类文件夹(不定期更新) ==|
|== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
===== 为IT菜鸟起飞铺跑道。和学生一起享受快乐和激情的大学 =====

版权声明:本文博主原创文章,博客,未经同意,不得转载。

时间: 2024-10-27 02:15:29

算法很重要,但是,并非所有,并不是每个人的选择的相关文章

算法重要,但并非全部,并非所有人的选择

[来信] 贺老师,你好.我是一名软件工程大二学生,两年下来,我学习成绩还算不错,也自学了一些东西.大一的时候我自学了C++.NET编程,然后看着别人写的炸弹人的代码自己也写了一个(感觉像是抄了一次),大二上学期的时候感觉对嵌入式开发有些兴趣,所以自学了Intel的IA-32汇编和LinuxC编程,但是我学的这些都不是很深,特别是学LinuxC的时候,因为对操作系统不熟悉所以很多进程方面的东西当时也没弄懂. 现在在自学Android,学完初级内容,打算深入学习的时候,却有师兄跟我说Android到

约瑟夫问题 算法很简单保证每隔人都能看懂用数组实现 利用循环删除数组中的元素

#include<iostream> using namespace std; const int size = 1000; void ArrDel() { int arr[size]; //循环结束标志,一直循环到数组中只剩下最后一个元素结束 int currentNum = size; int count = 0; for (int k = 0; k < size; k++) { arr[k] = k; } //currentNum==1表示数组中只剩下最后一个元素 是循环结束的标志

根据之前的博文,我把给同学做的三子棋小游戏的代码发出来,只是界面很丑很丑,AI算法很笨很笨,过几天我传到网盘上,提供大家下载娱乐

1 background_image_filename = 'blackground.png' 2 black_mouse_image_filename = 'black.png' 3 white_mouse_image_filename = 'white.png' 4 restart_icon_filename='restart.png' 5 pingju_icon_filename='pingju.jpg' 6 win_icon_filename='win.jpg' 7 lose_icon_

七大内部排序算法总结(插入排序、希尔排序、冒泡排序、简单选择排序、快速排序、归并排序、堆排序)

 写在前面: 排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列.因此排序掌握各种排序算法非常重要.对下面介绍的各个排序,我们假定所有排序的关键字都是整数.对传入函数的参数默认是已经检查好了的.只是简单的描述各个算法并给出了具体实现代码,并未做其他深究探讨. 基础知识: 由于待排序的记录数量不同,使得排序过程中设计的存储器不同,可将排序方法分为两大类:一类是内部排序,指的是待排序记录存放在计算机随机存储器中进行的排序过程.另一类是外部排序,

常见排序算法实现(直接插入排序,冒泡排序,快速排序,建大选择排序)

常见的排序算法实现(直接插入排序,冒泡排序,快速排序,建大选择排序),还有几个下次写上. #include "stdio.h" #include "stdlib.h" #include "malloc.h" #include <iostream> using namespace std; #define N 10 void showArr(int a[]); void InsertSort(int a[]);    //直接插入排序

排序算法-冒泡、插入、归并、希尔、快速、选择--代码总结

冒泡排序代码: #include <iostream> #include <string> using namespace std; template<class ItemType> void bubbleSort(ItemType theArray[], int n) { bool sorted = false; // False when swaps occur int pass = 1; while (!sorted && (pass < n

【算法整理】听说你写的算法很牛?-优质算法衡量标准探讨

引文 我有个朋友有算法强迫症,每次一看到别人写的算法,就有上去改的冲动,不然就会偏头疼,主要症结在于他认为别人写的算法不好,但是什么的算法可以评判为好,什么样的算法可以评判为不好?最近为了治愈他,我特地写了这篇文章. 算法的衡量从两个方向出发:时间复杂度和空间复杂度.本文主要是不讲具体算法,只将算法的衡量,重点讲解如何衡量算法的复杂度,解决平时见到的XX算法时间复杂是O(logn)O(logn),其中这个结果是怎么推导出来的?lognlogn是个什么玩意儿?,大写的OO是什么意思?为什么用这个符

经典算法--很小的算法理解算法的本质

//rplace.c //题目:假设存在字符串"qwer tyubfg hsdf   jjhg  ",并且该字符串具有足够大的空间编写算法将其中的空格字符用"%20"代替.//要求:时间复杂度:O(n),空间复杂度:S(1).//算法分析://要实现时间复杂度为O(n),必须采用一重循环,并且循环控制由数组长度n控制,可以采用多次循环.//  则不可用算法:    遍历数组遇见空格将空格替换成%20,然后将其后的各个元素向后移动,最坏的时间复杂度为:O(n^2),空

关于算法很好的网址