为什么说语言只是工具?(临近毕业,无聊)

引言

结束春招也有段日子了,投的岗位几乎都是后端开发相关,但是无论哪个公司面试到最后面试官表达的核心思想都是在公司不仅仅是做这一门语言相关的工作。以前在学校听某场由公司技术人员作的分享,记得当时的主持者问了一个很有意思的问题,“公司要开启一个新项目,需要使用一门新的语言,你认为给你多少时间让你学习?”。我记得在场同学有说一星期的,有说一个月的,有说三天的,然而那个主持者最后告诉我们,没有学习时间………………………………即几乎没有学习时间

有点意思…..

  //冒泡排序  
      int a[10]={2,3,4,5,6,7,8,9,1,0};
      for(i=0;i<10-1;i++)//n个数的数列总共扫描n-1次  
      {  
          for(j=0;j<10-i-1;j++)//每一趟扫描到a[n-i-2]与a[n-i-1]比较为止结束  
          {  
              if(a[j]>a[j+1])//后一位数比前一位数小的话,就交换两个数的位置(升序)  
              {  
                 t=a[j+1];  
                 a[j+1]=a[j];  
                 a[j]=t;  
              }  
          }  
      }
       int[] arr={6,3,8,2,9,1};
    for(int i=0;i<arr.length-1;i++){
      for(int j=0;j<arr.length-1-i;j++){
        if(arr[j]>arr[j+1]){
          int temp=arr[j];
          arr[j]=arr[j+1];
          arr[j+1]=temp;
        }
      }
    } 


	array = [1,2,3,6,5,4] 
	for i in range(len(array)): 
		for j in range(i): if array[j] > array[j + 1]:
            array[j], array[j + 1] = array[j + 1], array[j] 
	print array

	$b=array('4','3','8','9','2','1');
	$len=count($b);//6
	for($k=0;$k<=$len;$k++)
	{
		for($j=$len-1;$j>$k;$j--){
			if($b[$j]<$b[$j-1]){
			  $temp = $b[$j];
			  $b[$j] = $b[$j-1];
			  $b[$j-1] = $temp;
		  }
	  }
	}

以上分别是我用C,Java,Python,PhP这四种语言写的冒泡排序,冒泡排序的思想无非就是比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。然后根据这个思想使用相应的语言来达成目的,语言就是我们用来完成这个思想的工具,对于工具的使用大同小异,大同同在无非就是基本的三结构,顺序选择循环,小异在比如C是面向过程的,Java添加的面向对象的特性,php适用于web后端非常灵活等等,但是这些小特性根本不需要耗费开始入门计算机科学这一领域时学习所耗费的时间。这也就是为什么,我一直坚持学好一门语言其他的自然而然就会融汇贯通,而目前所有的这些语言又几乎是踩着C的肩膀诞生,所以说C语言是基础。

learning

记得大二时曾经也非常执着,在网上看各种语言的比较,有段时间甚至认为自己所用的Java是最好的(对,php 不是最好的^_^),后来无意中看到一篇blog,第一句话就是“成天讨论这门语言好,或者那门语言坏的人,甚至是可悲的。”身为一名科班狗,顿时觉得自己整体学着各种计算机通用知识,操作系统,编译原理,计算机网络,软件工程之类的,竟不明白如此简单的道理。程序=算法+结构,软件工程之中对于程序的初步定义,要是软件的定义的话,还要加上文档把。编程的要点可能就在于这即个定义。选择循环顺序,所有的编程大概最后都会归于这三个基础结构把。愚公在数千年前就在用类同的行为做编程实践,而几十万年前的智人,也在循环与分支所构成的逻辑中打转。
下面是我校招阶段总结的数据结构与算法,这些我个人觉得使用任何语言都可以实现:

ending

今早无疑中看到一个后端人员学习step,就简单分享下作为结束把。。。。。

  • Step1 学习一门语言
  • Step2 练习你学到的东西
  • Step3 学习软件包管理器
  • Step4 标准和最佳实践
  • Step5 安全
  • Step6 实践
  • Step7 了解测试
  • Step8 练习
  • Step9 了解关系数据库
  • Step10 Practical Time
  • Step11 学习框架
  • Step12 学习NoSql
  • Step13 缓存
  • Step14 创建RESTful API
  • Step15 了解不同的认证方法
  • Step16 消息代理
  • Step17 搜索引擎
  • Step18 了解如何使用Docker
  • Step19 Web服务器知识
  • Step20 了解使用Web Scoket
  • Step21 学习GraphQL
  • Step22 看看图数据库
  • Step23 keep Exploring

所以培训xxx学会编程,^_^

下面是一段C语言代码实现临近适配算法的next fit方法: ```c #include <stdio.h> #define MAX_BLOCKS 10 void nextFit(int blockSize[], int m, int processSize[], int n) { int allocation[MAX_BLOCKS] = {0}; // 用于存储每个进程所分配的块索引 int j = 0; // 用于追踪上一个被分配的块索引 for (int i = 0; i < n; i++) { // 查找下一个合适的块 while (j < m) { if (blockSize[j] >= processSize[i]) { // 如果找到了合适的块,则分配进程,并更新索引 allocation[i] = j; blockSize[j] -= processSize[i]; break; } j = (j + 1) % m; // 从下一个块开始查找 } // 如果没有找到合适的块,则输出错误信息 if (allocation[i] == -1) { printf("无法为进程 %d 分配内存\n", i+1); } } // 输出分配结果 printf("\n进程号\t进程大小\t块索引\n"); for (int i = 0; i < n; i++) { printf("%d\t%d\t\t", i+1, processSize[i]); if (allocation[i] != -1) { printf("%d\n", allocation[i]+1); } else { printf("未分配\n"); } } } int main() { int blockSize[MAX_BLOCKS], processSize[MAX_BLOCKS]; int m, n; // 输入块的数量和大小 printf("输入块的数量:"); scanf("%d", &m); printf("输入块的大小:"); for (int i = 0; i < m; i++) { scanf("%d", &blockSize[i]); } // 输入进程的数量和大小 printf("\n输入进程的数量:"); scanf("%d", &n); printf("输入进程的大小:"); for (int i = 0; i < n; i++) { scanf("%d", &processSize[i]); } // 调用nextFit方法进行分配 nextFit(blockSize, m, processSize, n); return 0; } ``` 该代码根据输入的块和进程的大小,使用next fit方法进行内存分配,并输出每个进程所分配的块索引。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值