NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

我写的代码与领导写的代码,有何区别?

  • 2020-02-16
  • 本文字数:4788 字

    阅读完需:约 16 分钟

我写的代码与领导写的代码,有何区别?

在程序员圈子有很多有趣的等级划分规则,例如格子衬衫是程序员不能放弃的自尊心,衬衫上的格子数目越多,等级越高,技术越厉害;秃顶是尊贵身份的象征,发际线越高,等级越高,经验越丰富;而代码则是一个轮回,随着等级的变化,你会发现你写的代码又回到了“最初的美好”!


编者小贴士:本文仅供娱乐,博君一笑!


首先,我们先来看看不同级别的程序员写的代码都是怎样的?在这里我们把程序员从学生到 CEO 共分成了 14 个等级,快来看看,你和你领导写的代码,差在哪里?

初高中同学写的代码

  10 PRINT "HELLO WORLD"
20 END

复制代码

大学一年级同学写的代码


program Hello(input, output)
begin
writeln('Hello World')
end.
复制代码

大学四年级同学写的代码

  (defun hello
(print
(cons 'Hello (list 'World))))

复制代码

初入职场菜鸟程序员写的代码

  #include <stdio.h>
void main(void)
{
char *message[] = {"Hello ", "World"};
int i;

for(i = 0; i < 2; ++i)
printf("%s", message[i]);
printf("\n");
}
复制代码

工作多年的资深程序员写的代码

  #include <iostream.h>
#include <string.h>

class string
{
private:
int size;
char *ptr;

string() : size(0), ptr(new char[1]) { ptr[0] = 0; }

string(const string &s) : size(s.size)
{
ptr = new char[size + 1];
strcpy(ptr, s.ptr);
}

~string()
{
delete [] ptr;
}

friend ostream &operator <<(ostream &, const string &);
string &operator=(const char *);
};

ostream &operator<<(ostream &stream, const string &s)
{
return(stream << s.ptr);
}

string &string::operator=(const char *chrs)
{
if (this != &chrs)
{
delete [] ptr;
size = strlen(chrs);
ptr = new char[size + 1];
strcpy(ptr, chrs);
}
return(*this);
}

int main()
{
string str;

str = "Hello World";
cout << str << endl;

return(0);
}

复制代码

骨灰级程序员写的代码

  [
uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
]
library LHello
{
// bring in the master library
importlib("actimp.tlb");
importlib("actexp.tlb");

// bring in my interfaces
#include "pshlo.idl"

[
uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
]
cotype THello
{
interface IHello;
interface IPersistFile;
};
};

[
exe,
uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
]
module CHelloLib
{

// some code related header files
importheader(<windows.h>);
importheader(<ole2.h>);
importheader(<except.hxx>);
importheader("pshlo.h");
importheader("shlo.hxx");
importheader("mycls.hxx");

// needed typelibs
importlib("actimp.tlb");
importlib("actexp.tlb");
importlib("thlo.tlb");

[
uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
aggregatable
]
coclass CHello
{
cotype THello;
};
};
#include "ipfix.hxx"
extern HANDLE hEvent;
class CHello : public CHelloBase
{
public:
IPFIX(CLSID_CHello);

CHello(IUnknown *pUnk);
~CHello();

HRESULT __stdcall PrintSz(LPWSTR pwszString);

private:
static int cObjRef;
};
#include <windows.h>
#include <ole2.h>
#include <stdio.h>
#include <stdlib.h>
#include "thlo.h"
#include "pshlo.h"
#include "shlo.hxx"
#include "mycls.hxx"

int CHello::cObjRef = 0;

CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
{
cObjRef++;
return;
}

HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString)
{
printf("%ws
", pwszString);
return(ResultFromScode(S_OK));
}

CHello::~CHello(void)
{

// when the object count goes to zero, stop the server
cObjRef--;
if( cObjRef == 0 )
PulseEvent(hEvent);

return;
}

#include <windows.h>
#include <ole2.h>
#include "pshlo.h"
#include "shlo.hxx"
#include "mycls.hxx"

HANDLE hEvent;

int _cdecl main(
int argc,
char * argv[]
) {
ULONG ulRef;
DWORD dwRegistration;
CHelloCF *pCF = new CHelloCF();

hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

// Initialize the OLE libraries
CoInitializeEx(NULL, COINIT_MULTITHREADED);

CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
REGCLS_MULTIPLEUSE, &dwRegistration);

// wait on an event to stop
WaitForSingleObject(hEvent, INFINITE);

// revoke and release the class object
CoRevokeClassObject(dwRegistration);
ulRef = pCF->Release();

// Tell OLE we are going away.
CoUninitialize();

return(0); }

extern CLSID CLSID_CHello;
extern UUID LIBID_CHelloLib;

CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
0x2573F891,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};

UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */
0x2573F890,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};

#include <windows.h>
#include <ole2.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "pshlo.h"
#include "shlo.hxx"
#include "clsid.h"

int _cdecl main(
int argc,
char * argv[]
) {
HRESULT hRslt;
IHello *pHello;
ULONG ulCnt;
IMoniker * pmk;
WCHAR wcsT[_MAX_PATH];
WCHAR wcsPath[2 * _MAX_PATH];

// get object path
wcsPath[0] = '\0';
wcsT[0] = '\0';
if( argc > 1) {
mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
wcsupr(wcsPath);
}
else {
fprintf(stderr, "Object path must be specified\n");
return(1);
}

// get print string
if(argc > 2)
mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
else
wcscpy(wcsT, L"Hello World");

printf("Linking to object %ws\n", wcsPath);
printf("Text String %ws\n", wcsT);

// Initialize the OLE libraries
hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);

if(SUCCEEDED(hRslt)) {


hRslt = CreateFileMoniker(wcsPath, &pmk);
if(SUCCEEDED(hRslt))
hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);

if(SUCCEEDED(hRslt)) {

// print a string out
pHello->PrintSz(wcsT);

Sleep(2000);
ulCnt = pHello->Release();
}
else
printf("Failure to connect, status: %lx", hRslt);

// Tell OLE we are going away.
CoUninitialize();
}

return(0);
}

复制代码

菜鸟黑客写的代码

  #!/usr/local/bin/perl
$msg="Hello, world.\n";
if ($#ARGV >= 0) {
while(defined($arg=shift(@ARGV))) {
$outfilename = $arg;
open(FILE, ">" . $outfilename) || die "Can't write $arg: $!\n";
print (FILE $msg);
close(FILE) || die "Can't close $arg: $!\n";
}
} else {
print ($msg);
}
1;

复制代码

有经验的黑客写的代码

  #include <stdio.h>
#define S "Hello, World\n"
main(){exit(printf(S) == strlen(S) ? 0 : 1);}

复制代码

资深黑客写的代码

  % cc -o a.out ~/src/misc/hw/hw.c
% a.out

复制代码

骨灰级黑客大师写的代码

  % echo "Hello, world."

复制代码

新任的初级经理写的代码

  10 PRINT "HELLO WORLD"
20 END

复制代码

中级经理写的代码

  mail -s "Hello, world." bob@b12
Bob, could you please write me a program that prints "Hello, world."?
I need it by tomorrow.
^D

复制代码

高级经理写的代码

  % zmail jim
I need a "Hello, world." program by this afternoon.

复制代码

公司 CEO 写的代码

  % letter
letter: Command not found.
% mail
To: ^X ^F ^C
% help mail
help: Command not found.
% damn!
!: Event unrecognized
% logout

复制代码


看完不同级别程序员的代码之后,你是不是也有所触动呢?上面的例子可能有点宽泛,接下来我们就集中在 Go 语言,看看不同级别的程序员都是怎么样写代码的?

初级 Go 语言程序员写的代码

package fac
func Factorial(n int) int { res := 1
for i := 1; i <= n; i++ { res *= i }
return res}

复制代码

功能性 Go 语言程序员写的代码

package fac
func Factorial(n int) int { if n == 0 { return 1 } else { return Factorial(n - 1) * n }}

复制代码

通用 Go 语言程序员写的代码

package fac
func Factorial(n interface{}) interface{} { v, valid := n.(int) if !valid { return 0 }
res := 1
for i := 1; i <= v; i++ { res *= i }
return res}

复制代码

多线程优化的 Go 语言程序员写的代码

 package fac
import "sync"
func Factorial(n int) int { var ( left, right = 1, 1 wg sync.WaitGroup )
wg.Add(2)
pivot := n / 2
go func() { for i := 1; i < pivot; i++ { left *= i }
wg.Done() }()
go func() { for i := pivot; i <= n; i++ { right *= i }
wg.Done() }()
wg.Wait()
return left * right}
复制代码

利用 Go 设计模式的程序员写的代码

package fac
func Factorial(n int) <-chan int { ch := make(chan int)
go func() { prev := 1
for i := 1; i <= n; i++ { v := prev * i
ch <- v
prev = v }
close(ch) }()
return ch}

复制代码

利用成熟的 Go 解决方案写的代码

package fac
/** * @see https://en.wikipedia.org/wiki/Factorial */type IFactorial interface { CalculateFactorial() int}
// FactorialImpl implements IFactorial.var _ IFactorial = (*FactorialImpl)(nil)
/** * Used to find factorial of the n. */type FactorialImpl struct { /** * The n. */ n int}
/** * Constructor of the FactorialImpl. * * @param n the n. */func NewFactorial(n int) *FactorialImpl { return &FactorialImpl{ n: n, }}
/** * Gets the n to use in factorial function. * * @return int. */func (this *FactorialImpl) GetN() int { return this.n}
/** * Sets the n to use in factorial function. * * @param n the n. * @return void. */func (this *FactorialImpl) SetN(n int) { this.n = n}
/** * Returns factorial of the n. * * @todo remove "if" statement. Maybe we should use a factory or somthing? * * @return int. */func (this *FactorialImpl) CalculateFactorial() int { if this.n == 0 { return 1 }
n := this.n this.n = this.n - 1
return this.CalculateFactorial() * n}

复制代码

高级 Go 语言程序员写的代码

package fac
// Factorial returns !n.func Factorial(n int) int { res := 1
for i := 1; i <= n; i++ { res *= i }
return res}

复制代码

类似于 Rob Pike 宗师级程序员写的代码

package fac
// Factorial returns !n.func Factorial(n int) int { res := 1
for i := 1; i <= n; i++ { res *= i }
return res}

复制代码


原文链接:


https://www.ariel.com.au/jokes/The_Evolution_of_a_Programmer.html


https://github.com/SuperPaintman/the-evolution-of-a-go-programmer#the-evolution-of-a-go-programmer


2020-02-16 11:565057

评论 2 条评论

发布
用户头像
感觉是熟悉一个套路之后,直接移植使用吧。。。
2020-03-28 14:27
回复
用户头像
大道至简
2020-02-27 11:19
回复
没有更多了
发现更多内容

掰扯掰扯需求分析:从工程到生活中的4个case

泊浮目

系统设计 需求分析

读TiDB源码聊设计:引子

泊浮目

分布式数据库 TiDB HTAP

LED户外广告屏寿命的关键因素及解决方案

Dylan

广告 维护 系统维护 LED显示屏 户外LED显示屏

RDS for MySQL Serverless公测上线:弹性伸缩,最高可降成本超80%

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云Serverless

请认真对待你的简历

老张

面试 简历优化 简历

请查收!“全国大学生智能汽车竞赛”线上赛备赛指南

飞桨PaddlePaddle

人工智能 百度 AI BAIDU 百度飞桨

深入了解手机App开发:从构思到上线的全过程

天津汇柏科技有限公司

数字化转型 低代码开发 定制软件开发 软件开发定制

春招开始,面试也多起来了

王磊

Java 面试

企业要想构建 AI 竞争力,就必须“私藏”大模型

极狐GitLab

为什么说 TiDB 在线扩容对业务几乎没有影响

PingCAP

数据库 TiDB TiKV

AmzTrends x TiDB Serverless:通过云原生改造实现全局成本降低 80%

PingCAP

数据库 数据分析 云原生 TiDB

华为云命令行工具KooCLI—高效云端管理的秘诀

华为云PaaS服务小智

云计算 API 华为云

JavaScript之structuredClone现代深拷贝

南城FE

JavaScript 前端 深拷贝

Python黑科技揭秘:多窗口操作不再是难题,这些技巧让你轻松搞定

测试人

Python 软件测试 自动化测试 测试开发

详解Python中sys模块的功能与应用

华为云开发者联盟

Python 开发 华为云 函数 华为云开发者联盟

AI大模型的发展趋势与应用前景

百度开发者中心

AI 大模型 人工智能、

如何防止 Elasticsearch 服务 OOM ?

极限实验室

ES console Gateway easysearch

QCN9274/Super WiFi 7: Explore the unlimited potential of next-generation networks

wallysSK

【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit

HMS Core

HarmonyOS

内含资料下载丨黄东旭:2024 现代应用开发关键趋势——降低成本、简化架构

PingCAP

数据库 TiDB AI技术 应用开发

Amazon Q :企业级的对话智能导航

亚马逊云科技 (Amazon Web Services)

教你用Ubuntu快速搭建饥荒服务器

华为云开发者联盟

开发 华为云 华为云开发者联盟 华为云服务器 饥荒

探索Terraform实践:优化基础设施管理

SEAL安全

架构 运维 Terraform

OpenAI文生视频大模型Sora:重塑视频内容生产

百度开发者中心

视频 大模型 人工智能、

大神玩花:借助WASM在浏览器中运行数据库

张文平

数据库 postgresql 前端 应用开发 Supabase

2024上海国际非金属材料技术应用展览会

吹吹晚风

国内主流AI大模型都是Python 开发的,国外AI大模型是什么语言开发的?为什么要用python?

算法的秘密

Dapp/DeFi/Swap交易所代币质押项目挖矿系统开发详情

l8l259l3365

Selenium帮助你轻松实现浏览器多窗口操作

霍格沃兹测试开发学社

Python黑科技揭秘:多窗口操作不再是难题,这些技巧让你轻松搞定

测吧(北京)科技有限公司

测试

EthSign联合创始人 POTTER LI 确认出席Hack .Summit() 香港区块链开发者大会!

TechubNews

我写的代码与领导写的代码,有何区别?_语言 & 开发_Patrick Jordan_InfoQ精选文章