写点什么

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

  • 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:565182

评论 2 条评论

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

科大讯飞联袂伯俊科技进军3C零售,构建发展新格局

科技热闻

牛掰!“基础-中级-高级”Java程序员面试集结,看完献出我的膝盖

Java spring 程序员 JVM hashmap

顶会VLDB‘22论文解读:CAE-ENSEMBLE算法

华为云开发者联盟

算法 时间序列 华为云数据库 深度神经网络

你需要知道的 19 个 console 实用调试技巧

CRMEB

CSS JavaScript DOM console crmeb

TDengine在浙商银行微服务监控中的实践

TDengine

tdengine 后端 时序数据库

百度智能云与雅量商业智能携手,加速零售行业智能化升级

百度开发者中心

百度智能云 零售行业

行业白皮书发布!百度智慧城市助力城市“双碳”目标达成

百度开发者中心

人工智能 智慧城市

Github上线仅六天,收获Star超55K+,这套笔记能拿下90%以上面试

Java redis spring 程序员 架构

《黑客之道》kali Linux之NMAP高级使用技巧和漏洞扫描发现

学神来啦

Linux 渗透 kali nmap

“智慧粮仓”守卫中国饭碗

ThingJS数字孪生引擎

大前端 物联网 可视化

科技热点周刊|ClickHouse 融资 2.5 亿美元、个人信息保护法正式实施、Facebook 改名 Meta

青云技术社区

云计算 facebook 云原生

四种 AI 技术方案,教你拥有自己的 Avatar 形象

阿里云CloudImagine

人工智能 阿里云 计算机视觉 视频云 元宇宙

架构实战营-总结

哈希

百度鸿鹄芯片落地首款量产车吉利博越X 智能车机体验惊艳成都车展

百度开发者中心

百度 车联网 鸿鹄芯片

百度Apollo参编首批汽车信息安全国家标准,跻身车联网信息安全第一梯队

百度开发者中心

Apollo

ReplacingMergeTree:实现Clickhouse数据更新

华为云开发者联盟

数据 事务 Clickhouse 数据更新 OLAP数据库

接口文档工具yapi的安装

小鲍侃java

11月日更

【高并发】开篇:线程与多线程

冰河

Java 并发编程 多线程 高并发 异步编程

GitHub远程免密连接详解,还顺手解决了RPC失败HTTP413

老表

GitHub RPC HTTP 11月日更

网课录屏用什么软件好?Camtasia极简操作,课程重点一目了然

淋雨

Camtaisa

恒源云(GPUSHARE)_CAN: 借助数据分布提升分类性能

恒源云

深度学习

端开发技术——5个高效的Flutter开发工具

思想者杰克

看完这篇SpringBoot让我在阿里成功涨薪40%,感谢

Java 编程 程序员 程序人生 springboot

linux lsquic 编译

webrtc developer

万字长文解密数据异构最佳实践(含完整代码实现)!!

冰河

MySQL 数据库 canal 数据同步 数据异构

常用的Nmap脚本及使用实例

喀拉峻

网络安全 信息安全 渗透测试 脚本 nmap

Hexo个人博客快速部署到Gitee&Coding详细教程

老表

Hexo gitee CODING 博客配置 11月日更

百度智能云人脸采集SDK通过CFCA权威安全测评

百度开发者中心

安全 sdk

极客时间【架构实战营】第二期 模块七作业

Geek_91606e

架构实战营

阿里云视频云,用技术普惠打造平民化“虚拟人”

阿里云CloudImagine

人工智能 阿里云 视频云 数字人 虚拟人

操作系统——计算机硬件简介

思想者杰克

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