掌握一门语言,我一般从以下几个方面入手:
网络编程。数据库的连接。多线程。Web开发(如果流行的话)。
其实严格说起来,这些特性不是一门“语言”的特性,而更像这门语言的“生态”的特性。
网络和数据库是必须要了解的;
多线程,如果没有多线程,世界真的很不美好。哪怕是像Python那样的伪多线程也好啊。
Web开发。事实上我们的程序有时候必须要有GUI。但开发GUI真的是一件让我心烦意乱的事情。如果是CS模式中Client的GUI,更让人难以忍受。所以我宁愿选择Web这类BS的开发模式,还可以选用Flex来增强用户体验。
其实这些的前提在于一个熟练的程序员,对主流高级语言的特性和必须的内置工具应该了然。依我愚见,各类语言我非就是把if,while,for,一些常用的util类,拼凑一下。如果能合理的运用一些设计模式就更好了。如果对工业应用中可能遇到的常用问题都考虑到,并尝试挖掘该语言中解决这类问题的代码(各类解决方式的思想常常是一致的),就更靠谱了。
申明一下,一家之言,针对初中级选手,高手不要拍我。
有个例外就是在OO或者函数式语言之间的切换可能不会这么轻松。
我个人最熟悉的还是Java,故而在试图玩弄Erlang的时候险些被玩弄。幸亏以前在Python中接触到一些函数式语言的特性,才没有死的太难看。
今天就看了一下C#的网络编程。
MSDN中有一个关于Socket的示例,功能是抓取给定host的网页源码。
// Get host related information.
hostEntry = Dns.GetHostEntry(server);
foreach (IPAddress address in hostEntry.AddressList)
{
IPEndPoint ipe = new IPEndPoint(address, port);
Socket tempSocket =
new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
tempSocket.Connect(ipe);
if (tempSocket.Connected)
{
s = tempSocket;
break;
}
else
{
continue;
}
}
首先ms从DNS得到给定DNS的IP,继而将ip和port封装成IPEndPoint,并以此来Connect。稍后就可以开始Send数据balabala。
略做修改,如果直接传入的就是ip,则有
IPAddress ip = IPAddress.Parse(server);
继而可以封装成IPEndPoint。
下一步就写个完整的C/S程序吧。
有个问题,为什么我在C#解决方案中不能写多个Main并选择性运行?