哦,这是什么神仙解决方案……
你还是继续投简历吧,反正你也刚入职。
这个要看原软件是干什么的、具体有哪些功能了。
对小白来说嘛……那要看什么样的小白。要我刚毕业的水平那就和玩一样;但对绝大多数计算机专业毕业生,那几乎是难比登天。
如果想挑战一下的话,可以这样做:
1、先搞明白这是个什么软件、都有什么功能;写个文档,罗列出它所有的功能点。
2、根据罗列的所有功能点,找到对应的源码(比如点击某个按钮后执行统计,那么你就要把这段统计逻辑找出来);然后开个excel表,把相应的源码写到功能点后面。这些经常可以原样拷贝到其他平台(但某些API可能需要替换)。
3、找齐了所有的功能点和实现代码后,剖析它和界面是如何结合的(注意诸如各种小提示、变色等细小功能的实现),这些常常是不可移植的,需要在目标平台重写。
4、学习Qt或者GTK框架,完成移植。
早期的MFC几乎无封装,很多代码实现的很罗嗦;在新的QT/GTK框架下可以做的很简洁。
早期的网络通讯几乎都是赤裸裸的使用socket相关API,这套API在各大平台基本是通用的,至多命名风格略有不同。
因此,这个移植其实难度不大:熟悉Qt/GTK里面按钮事件的写法、知道怎么用tool tips,然后直接拷贝相应的事件处理函数源码即可——C/C++的可移植性还是挺不错的,看到错误提示找一找对应API在Linux下是哪个头文件声明的、接口和Windows有无微妙差别,然后改过去就是。
除了那些很细腻的tool tips或字体改变(加黑、斜体、变色)等提示信息,里面90%的代码都可以直接复制。
当然,如果你觉得他原本写的太烂的话,参考他的旧有实现自己重写也行。
难不难什么的,其实还是与工作量相关的。
如果源代码一共也就一二十个文件,总代码量不足千行,那这个项目也就难不到哪儿去。一个正常思路的领导应该不会让新人移植过于复杂的项目。
至于C++要不要恶补?这个不需要吧,反正这个代码本身根本就是不能用的,你只是看代码然后当作需求自己重写而已。Linux这边完全可以不用C++写。你就说说你擅长什么吧,擅长啥就用啥。原MFC代码只要能看懂,不会写都没关系。
Linux这边,你想要用python,用java/kotlin,用go,用nodejs 什么的其实都行。只要你能看懂源代码,自己一行一行抄写过来实现即可。
至于你该学什么?首先取决于项目的代码量,如果代码量较大,建议你直接跑路。代码量较小,那可以试试。MFC的代码在其他环境都不能用,所以这代码只能看。自己看代码的逻辑,理解完了自己重写即可。
要搞清楚领导的意图,如果只是跑起来的话,用wine跑起来也是个办法。如果只是搞个小项目让你练手同时考核的话,这也算是不错的机会,毕竟完全重写代码这种事,很多程序员是欢迎的,比让你修改屎山代码舒服多了。
如果我做这项工作,先考虑在Windows平台下的改造,把GUI和逻辑拆离,逻辑模块保证只用标准C/C++。网络部分改造成用跨平台网络库如asio的。旧代码的逻辑模块中必然有一些日志系统等依赖Windows API的,这些都可以通过回调基类实现。
具体操作,你可以看下一些知名的代码库,逻辑部分和各个目标平台的sample是如何分工隔离的。
这些都做完后再考虑linux平台的移植问题。
但是我还是建议你跑路。