å¦æä½ å¯¹æ¦æ¶©çç»è®¡è¿ç®è¿è¡ç¹éçæ°æ®åæå·¥ä½ï¼é£ä¹ä½ ä¸éçRææªãå¦æä½ è·¨GPUè¿è¡NLPæå¯éçç¥ç»ç½ç»å¤çï¼é£ä¹Pythonæ¯å¾å¥½çéæ©ãå¦ææ³è¦ä¸ç§å åºçãé¢åç产ç¯å¢çæ°æ®æµè§£å³æ¹æ¡ï¼åæ¥æææéè¦çæä½å·¥å
·ï¼JavaæScalaç»å¯¹æ¯åºè²çéæ©ã
æä¸ä¸ªå¤§æ°æ®é¡¹ç®ï¼ä½ ç¥éé®é¢é¢å(problem domain)ï¼ä¹ç¥é使ç¨ä»ä¹åºç¡è®¾æ½ï¼çè³å¯è½å·²å³å®ä½¿ç¨åªç§æ¡æ¶æ¥å¤çææè¿äºæ°æ®ï¼ä½æ¯æä¸ä¸ªå³å®è¿è¿æªè½ååºï¼æ该éæ©åªç§è¯è¨?(æè
å¯è½æ´æé对æ§çé®é¢æ¯ï¼æ该迫使æçææå¼å人ååæ°æ®ç§å¦å®¶éè¦ç¨åªç§è¯è¨?)è¿ä¸ªé®é¢ä¸ä¼æ¨è¿å¤ªä¹
ï¼è¿æ©è¦å®å¤ºã
å½ç¶ï¼æ²¡æä»ä¹é»æ¢å¾äºä½ 使ç¨å
¶ä»æºå¶(æ¯å¦XSLT转æ¢)æ¥å¤ç大æ°æ®å·¥ä½ãä½é常æ¥è¯´ï¼å¦ä»å¤§æ°æ®æ¹é¢æä¸ç§è¯è¨å¯ä»¥éæ©ï¼RãPythonåScalaï¼å¤å ä¸ç´ä»¥æ¥å±¹ç«äºä¼ä¸ççJavaãé£ä¹ï¼ä½ 该éæ©åªç§è¯è¨?为ä½è¦éæ©å®ï¼æè
说ä½æ¶éæ©å®?
ä¸é¢ç®è¦ä»ç»äºæ¯ç§è¯è¨ï¼å¸®å©ä½ ååºåççå³å®ã
R
Rç»å¸¸è¢«ç§°ä¸ºæ¯âç»è®¡äººå为ç»è®¡äººåå¼åçä¸ç§è¯è¨âãå¦æä½ éè¦æ·±å¥¥çç»è®¡æ¨¡åç¨äºè®¡ç®ï¼å¯è½ä¼å¨CRANä¸æ¾å°å®ââä½ ç¥éï¼CRANå«ç»¼åRæ¡£æ¡ç½ç»(Comprehensive R Archive Network)并éæ ç¼æ æ
ã说å°ç¨äºåæåæ ç»ï¼æ²¡æä»ä¹æ¯å¾è¿ggplot2ãèå¦æä½ æ³å©ç¨æ¯ä½ æºå¨æä¾çåè½è¿å¼ºå¤§çåè½ï¼é£å¯ä»¥ä½¿ç¨SparkRç»å®ï¼å¨Rä¸è¿è¡Sparkã
ç¶èï¼å¦æä½ ä¸æ¯æ°æ®ç§å¦å®¶ï¼ä¹åä¹æ²¡æç¨è¿MatlabãSASæOCTAVEï¼å¯è½éè¦ä¸çªè°æ´ï¼æè½ä½¿ç¨Ræ¥é«æå°å¤çãè½ç¶Rå¾éååææ°æ®ï¼ä½æ¯å°±ä¸è¬ç¨éèè¨ä¸å¤ªæ
é¿ãä½ å¯ä»¥ç¨Ræ建模åï¼ä½æ¯ä½ éè¦èèå°æ¨¡å转æ¢æScalaæPythonï¼æè½ç¨äºç产ç¯å¢ï¼ä½ ä¸å¤ªå¯è½ä½¿ç¨è¿ç§è¯è¨ç¼åä¸ç§é群æ§å¶ç³»ç»(è¿æ°å¥½çè¯ï¼ä½ å¯ä»¥å¯¹å®è¿è¡è°è¯)ã
Python
å¦æä½ çæ°æ®ç§å¦å®¶ä¸ä½¿ç¨Rï¼ä»ä»¬å¯è½å°±ä¼å½»åºäºè§£Pythonãåå¤å¹´æ¥ï¼Pythonå¨å¦æ¯çå½ä¸ä¸ç´å¾æµè¡ï¼å°¤å
¶æ¯å¨èªç¶è¯è¨å¤ç(NLP)çé¢åãå èï¼å¦æä½ æä¸ä¸ªéè¦NLPå¤çç项ç®ï¼å°±ä¼é¢ä¸´æ°éå¤å¾è®©äººç¼è±ç¼ä¹±çéæ©ï¼å
æ¬ç»å
¸çNTLKã使ç¨GenSimç主é¢å»ºæ¨¡ï¼æè
è¶
å¿«ãåç¡®çspaCyãåæ ·ï¼è¯´å°ç¥ç»ç½ç»ï¼Pythonåæ ·æ¸¸åæä½ï¼æTheanoåTensorflow;éåè¿æé¢åæºå¨å¦ä¹ çscikit-learnï¼ä»¥åé¢åæ°æ®åæçNumPyåPandasã
è¿æJuypter/iPythonââè¿ç§åºäºWebçç¬è®°æ¬æå¡å¨æ¡æ¶è®©ä½ å¯ä»¥ä½¿ç¨ä¸ç§å¯å
±äº«çæ¥å¿æ ¼å¼ï¼å°ä»£ç ãå¾å½¢ä»¥åå ä¹ä»»ä½å¯¹è±¡æ··åèµ·æ¥ãè¿ä¸ç´æ¯Pythonçææ级åè½ä¹ä¸ï¼ä¸è¿è¿å¹´å¤´ï¼è¿ä¸ªæ¦å¿µè¯æ大æç¨éï¼ä»¥è³äºåºç°å¨äºå¥è¡è¯»å-读å-è¾åº-循ç¯(REPL)æ¦å¿µçå ä¹ææè¯è¨ä¸ï¼å
æ¬ScalaåRã
Pythonå¾å¾å¨å¤§æ°æ®å¤çæ¡æ¶ä¸å¾å°æ¯æï¼ä½ä¸æ¤åæ¶ï¼å®å¾å¾åä¸æ¯âä¸çå
¬æ°âãæ¯å¦è¯´ï¼Sparkä¸çæ°åè½å ä¹æ»æ¯åºç°å¨Scala/Javaç»å®çé¦ä½ï¼å¯è½éè¦ç¨PySparkç¼åé¢åé£äºæ´æ°ççå 个次è¦çæ¬(对Spark Streaming/MLLibæ¹é¢çå¼åå·¥å
·èè¨å°¤ä¸ºå¦æ¤)ã
ä¸Rç¸åï¼Pythonæ¯ä¸ç§ä¼ ç»çé¢å对象è¯è¨ï¼æ以大å¤æ°å¼å人åç¨èµ·æ¥ä¼ç¸å½å¾å¿åºæï¼èå次æ¥è§¦RæScalaä¼è®©äººå¿ççæ§ãä¸ä¸ªå°é®é¢å°±æ¯ä½ ç代ç ä¸éè¦çåºæ£ç¡®ç空ç½å¤ãè¿å°äººååæ两大éµè¥ï¼ä¸æ´¾è§å¾âè¿é常æå©äºç¡®ä¿å¯è¯»æ§âï¼å¦ä¸æ´¾å认为ï¼2016å¹´ï¼æ们åºè¯¥ä¸éè¦å°±å 为ä¸è¡ä»£ç æ个å符ä¸å¨éå½çä½ç½®ï¼å°±è¦è¿«ä½¿è§£éå¨è®©ç¨åºè¿è¡èµ·æ¥ã
Scala
ç°å¨è¯´è¯´Scalaï¼å¨æ¬æä»ç»çåç§è¯è¨ä¸ï¼Scalaæ¯æè½»æ¾çè¯è¨ï¼å 为大家é½æ¬£èµå
¶ç±»åç³»ç»ãScalaå¨JVMä¸è¿è¡ï¼åºæ¬ä¸æåå°ç»åäºå½æ°èå¼åé¢å对象èå¼ï¼ç®åå®å¨éèçåéè¦å¤çæµ·éæ°æ®çå
¬å¸ä¼ä¸ä¸åå¾äºå·¨å¤§è¿å±ï¼å¸¸å¸¸éç¨ä¸ç§å¤§è§æ¨¡åå¸å¼æ¹å¼æ¥å¤ç(æ¯å¦TwitteråLinkedIn)ãå®è¿æ¯é©±å¨SparkåKafkaçä¸ç§è¯è¨ã
ç±äºScalaå¨JVMéé¢è¿è¡ï¼å®å¯ä»¥ç«å³éæ访é®Javaçæç³»ç»ï¼ä¸è¿å®ä¹æä¸ç³»å广æ³çâåçâåºï¼ç¨äºå¤ç大è§æ¨¡æ°æ®(å°¤å
¶æ¯TwitterçAlgebirdåSummingbird)ãå®è¿å
æ¬ä¸ä¸ªä½¿ç¨é常æ¹ä¾¿çREPLï¼ç¨äºäº¤äºå¼å¼åååæï¼å°±å使ç¨PythonåRé£æ ·ã
æ个人é常å欢Scalaï¼å 为å®å
æ¬è®¸å¤å®ç¨çç¼ç¨åè½ï¼æ¯å¦æ¨¡å¼å¹é
ï¼èä¸è¢«è®¤ä¸ºæ¯æ åçJavaç®æ´å¾å¤ãç¶èï¼ç¨Scalaæ¥å¼åä¸æ¢ä¸ç§æ¹æ³ï¼è¿ç§è¯è¨å°æ¤ä½ä¸ºä¸é¡¹ç¹è²æ¥å®£ä¼ ãè¿æ¯å¥½äº!ä¸è¿èèå°å®æ¥æå¾çµå®å¤(Turing-complete)çç±»åç³»ç»ååç§å¼¯å¼¯æ²æ²çè¿ç®ç¬¦(â/:â代表foldLeftï¼â:\â代表foldRight)ï¼å¾å®¹ææå¼Scalaæ件ï¼ä»¥ä¸ºä½ çå°çæ¯æ段讨åçPerl代ç ãè¿å°±éè¦å¨ç¼åScalaæ¶éµå¾ªä¸å¥å¥½çå®è·µååå(Databricksçå°±å¾åç)ã
å¦ä¸ä¸ªç¼ºç¹æ¯ï¼Scalaç¼è¯å¨è¿è¡èµ·æ¥æç¹æ
¢ï¼ä»¥è³äºè®©äººæ³èµ·ä»¥åâç¼è¯!âçæ¥åãä¸è¿ï¼å®æREPLãæ¯æ大æ°æ®ï¼è¿æéç¨JupyteråZeppelinè¿ä¸å½¢å¼çåºäºWebçç¬è®°æ¬æ¡æ¶ï¼æ以æè§å¾å®ç许å¤å°é®é¢è¿æ¯æ
æå¯åã
Java
æç»ï¼æ»æ¯å°ä¸äºJavaââè¿ç§è¯è¨æ²¡äººç±ï¼è¢«éå¼ï¼å½ä¸å®¶åªæéè¿èµ·è¯è°·æææé±å¯èµæ¶æä¼¼ä¹å
³å¿å®çå
¬å¸(注ï¼Oracle)ææï¼å®å
¨ä¸æ¶é«¦ãåªæä¼ä¸ççæ 人æºæ使ç¨Java!ä¸è¿ï¼Javaå¯è½å¾éåä½ ç大æ°æ®é¡¹ç®ãæ³ä¸æ³Hadoop MapReduceï¼å®ç¨Javaç¼åãHDFSå¢?ä¹ç¨Javaæ¥ç¼åãè¿StormãKafkaåSparké½å¯ä»¥å¨JVMä¸è¿è¡(使ç¨ClojureåScala)ï¼è¿æå³çJavaæ¯è¿äºé¡¹ç®ä¸çâä¸çå
¬æ°âãå¦å¤è¿æåGoogle Cloud Dataflow(ç°å¨æ¯Apache Beam)è¿äºæ°ææ¯ï¼ç´å°æè¿å®ä»¬è¿åªæ¯æJavaã
Javaä¹è®¸ä¸æ¯ææ»ææè¬å¤ååç±çé¦éè¯è¨ãä½æ¯ç±äºç å人åå¨ç«åçæ¸
Node.jsåºç¨ç¨åºä¸çä¸å¥åè°ï¼ä½¿ç¨Javaè®©ä½ å¯ä»¥è®¿é®ä¸ä¸ªåºå¤§ççæç³»ç»(å
æ¬åæå¨ãè°è¯å¨ãçæ§å·¥å
·ä»¥åç¡®ä¿ä¼ä¸å®å
¨åäºæä½æ§çåº)ï¼ä»¥åé¤æ¤ä¹å¤çæ´å¤å
容ï¼å¤§å¤æ°å
容å¨è¿å»äºåå¹´å·²ä¹
ç»èéª(å¾éæ¾ï¼Javaä»å¹´è¿æ¥21å²ï¼æ们é½èç£)ã
ç®è½°Javaçä¸ä¸ªä¸»è¦çç±æ¯ï¼é常ç¹çåé¿ï¼èä¸ç¼ºå°äº¤äºå¼å¼åæéçREPL(RãPythonåScalaé½æ)ãæè§è¿10è¡åºäºScalaçSpark代ç è¿
éåæç¨Javaç¼åçåæç200è¡ä»£ç ï¼è¿æåºå¤§çç±»åè¯å¥ï¼å®ä»¬å æ®äºå±å¹ç大é¨å空é´ãç¶èï¼Java 8ä¸æ°çLambdaæ¯æåè½å¯¹äºæ¹åè¿ç§æ
åµå¤§æ帮å©ãJavaä»æ¥ä¸ä¼åScalaé£ä¹ç´§åï¼ä½æ¯Java 8确确å®å®ä½¿å¾ç¨Javaè¿è¡å¼åä¸é£ä¹çè¦ã
è³äºREPL?好å§ï¼ç®åè¿æ²¡æãæå¹´æ¨åºçJava 9ä¼å
æ¬JShellï¼æææ»¡è¶³ä½ çææREPLè¦æ±ã
温馨提示:答案为网友推荐,仅供参考