整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          眾網(wǎng)友界定編程語言,JS、SQL和HTML到底算編程語言嗎?

          什么是編程語言?"我總會問自己這個問題,SQL是嗎?Excel是嗎?HTML是嗎?……這些問題總在困擾著我,所以我把這些疑問整理成問卷的形式,向各位網(wǎng)友征集了大家的想法。

          上圖就是我們這次調研結果,這次調查我們一共設置了三個選項:是、否和棄權,調查對象主要有HackNews和Reddit的讀者組成。

          正如我們所預期的那樣,絕大多數(shù)人都認同C、Java和JavaScript是編程語言,而其他選項的調查結果就有趣了很多:

          Verilog:大多數(shù)人同意Verilog(硬件描述語言)是一種編程語言,他們認為即使軟件的輸出是硬件,但生成硬件的過程仍然是程序化的。

          SQL:大多數(shù)人認為SQL是一個編程語言,但是很多人因為其缺乏完整性而提出了異議,SQL雖然沒有類和循環(huán),但其仍然有算術表達式、函數(shù)和變量。

          C preprocessor:被調查者對于C preprocessor的興趣明顯要高于正則表達式,C preprocessor本質上是一個字符串替換引擎,它比正則表達式的功能更少,只用于生成C代碼。但是,很多人認為是否被用來生成代碼是判斷是否為編程語言的關鍵因素。

          LaTeX:咋一看,這是最接近編程語言的,LaTeX具有變量,函數(shù)和許多其他類PL功能(LaTeX是Turing-complete!),但是由于它的輸出是一個文檔,所以我并不看好大家會把它當做是一種編程語言。

          但是令人驚訝的是,它就排在C preprocessor之后。

          CSS:進入Web語言時代之后,少數(shù)的受訪者也把CSS當做是一種編程語言。

          TensorFlow:TensorFlow是一種具有變量、循環(huán)、編譯器等的數(shù)據(jù)流語言。然而,因為它是一種特定于領域的語言,而且沒有獨立的語法(它通常通過Python API編程),大多數(shù)被調查者并不認為它是一種編程語言。

          HTML:可能和CSS的情況一樣。

          JSON: JSON是一種數(shù)據(jù)規(guī)范語言,但是大多數(shù)人并不把它當做是編程語言。

          Microsoft Word: GUIs不可能是編程語言!

          Eclipse:看結果,很顯然并不是!

          對于上述列舉的大家是否認為其屬于編程語言呢?歡迎在下方留言評論!

          背景

          京東SRC(Security Response Center)收錄大量外部白帽子提交的sql注入漏洞,漏洞發(fā)生的原因多為sql語句拼接和Mybatis使用不當導致。

          2 手工檢測

          2.1 前置知識

          mysql5.0以上版本中存在一個重要的系統(tǒng)數(shù)據(jù)庫information_schema,通過此數(shù)據(jù)庫可訪問mysql中存在的數(shù)據(jù)庫名、表名、字段名等元數(shù)據(jù)。information_schema中有三個表成為了sql注入構造的關鍵。

          1)infromation_schema.columns:

          • table_schema 數(shù)據(jù)庫名
          • table_name 表名
          • column_name 列名

          2)information_schema.tables

          • table_schema 數(shù)據(jù)庫名
          • table_name 表名

          3)information_schema.schemata

          • schema_name 數(shù)據(jù)庫名

          SQL注入常用SQL函數(shù)

          • length(str) :返回字符串str的長度
          • substr(str, pos, len) :將str從pos位置開始截取len長度的字符進行返回。注意這里的pos位置是從1開始的,不是數(shù)組的0開始
          • mid(str,pos,len) :跟上面的一樣,截取字符串
          • ascii(str) :返回字符串str的最左面字符的ASCII代碼值
          • ord(str) :將字符或布爾類型轉成ascll碼
          • if(a,b,c) :a為條件,a為true,返回b,否則返回c,如if(1>2,1,0),返回0

          2.2 注入類型

          2.2.1 參數(shù)類型分類

          • 整型注入
            例如?id=1,其中id為注入點,類型為int類型。
          • 字符型注入
            例如?id=”1”,其中id為注入點,類型為字符型,要考慮閉合后端sql語句中的引號。

          2.2.2 注入方式分類

          • 盲注
          • 布爾盲注:只能從應用返回中推斷語句執(zhí)行后的布爾值。
          • 時間盲注:應用沒有明確的回顯,只能使用特定的時間函數(shù)來判斷,例如sleep,benchmark等。
          • 報錯注入:應用會顯示全部或者部分的報錯信息
          • 堆疊注入:有的應用可以加入 ; 后一次執(zhí)行多條語句
          • 其他

          2.3 手動檢測步驟(字符型注入為例)

           // sqli vuln code
                      Statement statement = con.createStatement();
                      String sql = "select * from users where username = '" + username + "'";
                      logger.info(sql);
                      ResultSet rs = statement.executeQuery(sql);
          // fix code 如果要使用原始jdbc,請采用預編譯執(zhí)行
                      String sql = "select * from users where username = ?";
                      PreparedStatement st = con.prepareStatement(sql);

          使用未預編譯原始jdbc作為demo,注意此demo中sql語句參數(shù)采用單引號閉合。

          2.3.1 確定注入點

          對于字符類型注入,通常先嘗試單引號,判斷單引號是否被拼接到SQL語句中。推薦使用瀏覽器擴展harkbar作為手工測試工具。https://chrome.google.com/webstore/detail/hackbar/ginpbkfigcoaokgflihfhhmglmbchinc

          正常頁面應該顯示如下:

          admin后加單引號導致無信息回顯,原因是后端sql執(zhí)行報錯,說明引號被拼接至SQL語句中

          select * from users where username = 'admin'  #正常sql
          select * from users where username = 'admin'' #admin'被帶入sql執(zhí)行導致報錯無法顯示信息

          2.3.2 判斷字段數(shù)

          mysql中使用order by 進行排序,不僅可以是字段名也可以是字段序號。所以可以用來判斷表中字段數(shù),order by 超過字段個數(shù)的數(shù)字就會報錯。

          判斷字段數(shù)

          當order by 超過4時會報錯,所以此表共四個字段。

          后端所執(zhí)行的sql語句

          select * from users where username = 'admin' order by 1-- '

          此處我們將原本username的值admin替換為admin’ order by 1 —+,其中admin后的單引號用于閉合原本sql語句中的前引號,—+用于注釋sql語句中的后引號。—后的+號主要作用是提供一個空格,sql語句單行注釋后需有空格,+會被解碼為空格。

          2.3.3 確定回顯位置

          主要用于定位后端sql字段在前端顯示的位置,采用聯(lián)合查詢的方式確定。注意聯(lián)合查詢前后字段需一致,這也就是我們?yōu)槭裁醋龅诙降脑颉?/span>

          通過下圖可知,后端查詢并回顯的字段位置為2,3位。

          聯(lián)合查詢后的字段可以隨意,本次采用的是數(shù)字1到4直觀方便。

          2.3.4 利用information_schema庫實現(xiàn)注入

          group_concat()函數(shù)用于將查詢結果拼接為字符串。

          • 查看存在數(shù)據(jù)庫

          • 查看當前數(shù)據(jù)庫中的表

          • 查看指定表中字段

          • 利用以上獲取信息讀取users表中username和password

          3 自動化檢測

          3.1 sqlmap 使用

          sqlmap兼容python2和python3,可以自動化檢測各類注入和幾乎所有數(shù)據(jù)庫類型。

          3.1.1 常用命令

          -u  可能存在注入的url鏈接
          -r讀取http數(shù)據(jù)包
          --data 指定post數(shù)據(jù)
          --cookie 指定cookie
          --headers 指定http頭 如采用token認證的情況下
          --threads 指定線程數(shù)
          --dbms 指定后端的數(shù)據(jù)庫
          --os 指定后端的操作系統(tǒng)類型
          --current-user 當前用戶
          --users 所有用戶
          --is-dba 是否是dba
          --sql-shell 交互式的sqlshell
          -p指定可能存在注入點的參數(shù)
          --dbs 窮舉系統(tǒng)存在的數(shù)據(jù)庫
          -D指定數(shù)據(jù)庫
          --tables 窮舉存在的表
          -T指定表
          --column 窮舉字段
          -C指定字段
          --dump dump數(shù)據(jù)

          直接檢測
          其中—cookie用于指定cookie,—batch 自動化執(zhí)行,—dbms指定數(shù)據(jù)庫類型

          檢測結果

          讀取系統(tǒng)中存在數(shù)據(jù)庫
          —dbs讀取當前用戶下的數(shù)據(jù)庫

          讀取指定庫下的表
          -D java_sec_code —tables

          dump users表數(shù)據(jù)
          -D java_sec_code -T users —dump

          4 進階

          4.1 Mybatis注入

          1)$錯誤使用導致注入

          //采用#不會導致sql注入,mybatis會使用預編譯執(zhí)行
              @Select("select * from users where username = #{username}")
              User findByUserName(@Param("username") String username);
          //采用$作為入?yún)⒖蓪е聅ql注入
              @Select("select * from users where username = '${username}'")
              List<User> findByUserNameVuln01(@Param("username") String username);

          2)模糊查詢拼接

          //錯誤寫法
            <select id="findByUserNameVuln02" parameterType="String" resultMap="User">
                  select * from users where username like '%${_parameter}%'
              </select>
          
           //正確寫法
           <select id="findByUserNameVuln02" parameterType="String" resultMap="User">
                  select * from users where username like concat(‘%’,#{_parameter}, ‘%’)  
              </select>

          3)order by 注入

          order by 后若使用#{}會導致報錯,因為#{}默認添加引號會導致找不到字段從而報錯。

             //錯誤寫法 
          <select id="findByUserNameVuln03" parameterType="String" resultMap="User">
                  select * from users
                  <if test="order != null">
                      order by ${order} asc
                  </if>
              </select>
          //正確寫法 id指字段id 此表字段共四個 所以id為1-4
              <select id="OrderByUsername" resultMap="User">
                  select * from users order by id asc limit 1
              </select>

          以上測試均在本地進行,請勿未授權進行滲透測試

          5 文章及資料推薦

          slqmap手冊:https://octobug.gitbooks.io/sqlmap-wiki-zhcn/content/Users-manual/Introduction.html
          sql注入詳解:http://sqlwiki.radare.cn/#/


          作者:羅宇(物流安全小分隊)

          實世界中,作為程序員,選擇哪一門編程語言并不會如生死攸關那般重要。畢竟大多數(shù)常見的編程語言的基本概念都大同小異,且對于編程新手來說,大多數(shù)編程語言看起來都差不多,它們可以讓你獲得近乎相同的結果。但從開發(fā)人員的角度來看,編程語言不僅是一種工具,而且選擇正確的編程語言將會影響一個人的職業(yè)生涯、錢途以及未來生活的幸福指數(shù)。在此,本文將基于 2018 年的開發(fā)者生態(tài)系統(tǒng)報告,剖析當前主流編程語言的趨勢,探索在新的一年中,最具潛力、最值得學習的編程語言。



          作者 | Rafi Zikavashvili

          譯者 | 安翔

          責編 | 屠敏

          出品 | CSDN(ID:CSDNNews)

          選擇編碼語言需要進行各方面權衡。對于初學者來說,需要在學習代價和收益之間找到平衡點。此外,還需要清楚編程語言的長期前景。對于 21 世紀初的 Web 開發(fā)人員來說,PHP 和 Ruby on Rails 很顯然是提升自己職業(yè)發(fā)展的最佳語言。而如今的市場條件已經(jīng)發(fā)生了巨大的變化,PHP 和 Ruby 不再是我們首推的選項。

          本文提供了一份我們在 2019 年最應該學習的編程語言指南。我們會一一介紹這幾種語言,并且探討其用途和長期前景。我們還會列舉幾個用于專業(yè)特定領域的編程語言。為了顯示每種語言的市場份額及占有率,我們參考了 Stack Overflow 2018 年開發(fā)者調查報告中的編程語言排名。

          學習一門新語言的關鍵原因之一是能夠利用它增加開發(fā)者的就業(yè)機會。編程面試是雇主了解開發(fā)者對該編程語言了解程度的重要途徑。為了更好地幫助開發(fā)者通過編程面試,本文會提供一系列在面試中可能涉及的問題。

          我們參考了 Stack Overflow 調查,并根據(jù)推薦力度對這幾種編程語言進行了排名。此外,我們將這份榜單的編程語言限制為命令式語言,而不包括聲明性語言,比如 HTML、CSS 和 SQL,以及 shell 腳本語言,比如 Bash。



          第 1 名:JavaScript


          在 2015 年,有 54.4% 的開發(fā)人員將 JavaScript 列為最受歡迎的技術。而 2018 年的Stack Overflow 開發(fā)者調查報告顯示,JavaScript 位居榜首,有高達 71.5% 的專業(yè)開發(fā)人員將 JavaScript 評為最受歡迎的編程語言,增長幅度非常大。



          這種大幅增長的重要原因在于 JavaScript 幾乎無處不在。針對客戶端領域,你可以使用諸如 Angular、React 和 Vue 等 JavaScript 前端框架來構建基于瀏覽器的 Web 應用程序。而 Node.js 能夠讓開發(fā)者使用與前端一樣的編程語言來開發(fā)后端程序。使用 Node,開發(fā)者可以編寫 Web 服務端程序,用來管理物聯(lián)網(wǎng)(IoT)項目,或者進行機器學習實驗。在眾多編程語言中優(yōu)先選擇 JavaScript 的另一個重要原因在于,它得到了整個軟件行業(yè)的廣泛支持,Google、Facebook、微軟以及亞馬遜等科技巨頭都在大力使用 JavaScript。開發(fā)者可以找到有關 JavaScript 的各種各樣的學習資源,比如收費或者免費的課程、網(wǎng)站、書籍、視頻以及博客,這些資源涵蓋了該語言的方方面面。

          在大部分時間里,JavaScript 一度被認為是編程語言領域的丑小鴨。盡管它至今未能變成美麗的天鵝,但在 JavaScript 社區(qū)齊心協(xié)力的努力下,它已經(jīng)從基于瀏覽器的腳本語言變成了現(xiàn)代的多功能語言。隨著時間的推移,JavaScript 的缺點越來越少。



          值得注意的是,關于 JavaScript,許多雇主將在編程面試中通過候選人對JavaScript 特殊功能的了解程序來評估候選人能力。常見的編程面試問題會涉及到變量范圍、閉包、回調以及條件運算符。任何從事 JavaScript 相關工作的開發(fā)者都應該熟知類似的面試問題。此外,我們還建議開發(fā)者去了解自己心儀的公司,研究其使用的技術棧,并熟悉相關的框架(例如 React、Angular 或者 Vue),從而能夠在面試中展示自己的能力。



          第 2 名:Python


          Stack Overflow 調查顯示,Python 受到了 37.9% 的專業(yè)開發(fā)者的親睞。在過去五年中,Python 的發(fā)展速度比其它任何語言都快。如今 Python 的影響力非常巨大,就連很少涉及開發(fā)者相關主題報道的著名雜志經(jīng)濟學人也在最近的一篇文章中提到了 Python 語言(https://www.economist.com/graphic-detail/2018/07/26/python-is-becoming-the-worlds-most-popular-coding-language)。



          Python 受到熱捧的一部分原因在于它擺脫了很多其他語言的惱人慣例,比如它舍去了用來表示語句結束的分號。正是因為其簡潔,Python 才得以取代 Java 作為計算機科學教學的主要語言,不僅大學,而且高中和小學的編程課程都優(yōu)先選擇 Python 來教學。在學術界,Python 已經(jīng)成為機器學習和數(shù)據(jù)科學領域最流行的通用語言。事實上,Python 目前已經(jīng)在這些領域占據(jù)了主導地位,在數(shù)據(jù)科學領域提出了 Python 與 R 語言結合使用的方案。

          Python 與其他編碼語言相比既有相似也有不同。Python 開發(fā)人員在面試時,首先會被考察對編程語言基本知識的理解,例如數(shù)據(jù)類型、模塊化、函數(shù)和類。此外,候選人還可能會被問及如何編寫 Python 腳本、如何使用 Python 進行面向對象編程或者如何使用 Python 進行函數(shù)式編程等問題。更進一步,開發(fā)者還需要了解 Python 特定的數(shù)據(jù)類型和功能,例如元組、列表推導、字典和裝飾器。



          第 3 名:Java


          Java 在這份榜單中排名第三。根據(jù) Stack Overflow 2018 年的調查,有45.5%的專業(yè)開發(fā)人員青睞 Java。



          Java 能夠持久地對開發(fā)者產(chǎn)生吸引力的一個重要原因是 Java 虛擬機(JVM)。JVM 使得用 Java 編寫的程序能夠在不同的硬件平臺和設備上運行。Java 還能夠幫助開發(fā)者處理數(shù)據(jù)類型和內存管理相關的讓人頭疼的任務。Java 簡化了應用程序的開發(fā),并且同一 Java 程序可以部署在不同的操作系統(tǒng)上,這使得 Java 成為大公司的首選語言。如此一來,只要你學好 Java,就很容易在大公司謀得一份不錯的開發(fā)職位。Java 的另外一個重要用途是編寫原生 Android 應用程序。隨著 Android 操作系統(tǒng)在智能手機領域的遙遙領先,這促發(fā)了更多的開發(fā)人員學習 Java,從而投身 Android 應用開發(fā)大潮之中。

          近年來,為了廣泛利用 Java 的生態(tài)系統(tǒng),有很多編程語言被創(chuàng)造,或者移植到 JVM。這些語言在特定領域中熠熠生輝,比如 Scala、Closure 和 Kotlin。Kotlin 有許多有趣的用途,比如編寫 Android 應用程序和使用 Corda 框架開發(fā)區(qū)塊鏈。

          Java 開發(fā)人員在面試時,理解語言的范圍非常重要。面試內容可能會涉及任何與Java 相關的主題。作為一名企業(yè)級軟件 Java 開發(fā)者,你需要具備對 Java 基礎結構的深刻理解,比如 JDK、JRE 和 JVM。Android 開發(fā)人員將被問及與 Android 相關的問題,包括 SDK 版本管理、intent、設備模擬以及應用程序部署過程。假如你面試的公司使用的是基于 JVM 的其他編程語言,那么你需要證明自己對該語言足夠了解。



          第4名:C#


          在參加 Stack Overflow 2018 年調查的開發(fā)者中,有 35.5% 的專業(yè)人士是微軟 C# 的粉絲。盡管很多開發(fā)者對微軟的所作所為有些反感,但是在這份榜單中,僅有 JavaScript、Python 和 Java 的排名高于 C#。當然,Bash 腳本語言 40.4% 的支持率也比 C# 高,但是腳本語言不在本文的討論范圍內。



          目前 Java 的支持率的確比 C# 高,但是從長遠來看,種種跡象表明這種現(xiàn)狀會發(fā)生改變。Java 提供新功能的步伐已開始放緩,而微軟一直在積極為 C# 增加新的特性和功能。微軟為了擺脫自身對 Windows 操作系統(tǒng)的依賴,一直法力與其他新的領域,包括購買 Xamarin 及其跨平臺開發(fā)環(huán)境,發(fā)布多平臺 .NET Core ,以及對 Azure 持續(xù)投資。C# 在未然的企業(yè)戰(zhàn)略中扮演著重要角色,微軟也在努力確保 C# 可以同時使用微軟技術和開放的行業(yè)標準。

          與 Java一樣,C# 語言同樣擁有強大的生態(tài)系統(tǒng)。這意味你在面試 C#職位時,需要對雇主的未來市場有一定程度的了解。與 Java 一樣,大多數(shù) C# 面試都包含了與C#基礎架構相關的問題,包括 .Net 框架和公共語言運行時(CLR)。值得注意的是,CLR 還可以托管其他語言,例如 F# 和 VB.net。如果你面試的公司使用 C# 以外的 CLR 語言,那么你需要了解這門語言。



          第5名:C / C ++


          雖然 C 和 C ++ 是兩門不同編程模型的獨立語言,但它們之間的聯(lián)系非常緊密,本文將把它們一起討論。

          對于通用和專用任務,例如應用程序開發(fā)、用戶界面、移動應用程序和機器學習,C 語言都完全不擅長。但是,在嵌入式系統(tǒng)和操作系統(tǒng)領域,C 仍然占據(jù)絕對的主導地位。Linux 就是最好的例子。Linux 是有史以來最流行的操作系統(tǒng),它既可運行在大型設備上,也可運行在小型的移動設備上。Linux 最核心的部分是 Linux 內核,而 Linux 內核就是用 C 語言編寫的。C 語言的另一個常見用途是編寫其他編程語言,比如榜單的第二名 Python 語言就是用 C 語言編寫的。



          C ++ 是更現(xiàn)代的并且面向對象的 C 語言版本。C ++ 通常用在對性能要求很高的領域。例如,許多涉及金融業(yè)務公司的后端系統(tǒng)中就會選擇使用 C ++。C++ 以高性能著稱,因此它是圖形密集型應用程序的首選語言,比如游戲開發(fā)、圖形引擎、虛擬現(xiàn)實和增強現(xiàn)實。

          在參加 C 或者 C ++ 的面試時,面試官可能會提出一些適用于這兩種語言的問題。這包括編碼有關的數(shù)據(jù)類型、運算符、循環(huán)、條件語句、指針和內存管理等問題。開發(fā)者可能還會被要求定義和解釋鏈表,以及編寫實現(xiàn)和管理鏈表的簡短程序。由于 C ++是面向對象的語言,因此與面向對象有關的對象、類、方法、屬性等問題都有可能被問到。



          其他語言


          本文榜單中前五的語言都是通用型的。除此之外,在某些特定領域,同樣有很多相對小眾的編程語言,我將列舉如下。

          這其中,蘋果的 Swift 應當是關注度最高的語言。Swift 是蘋果公司推出的新型通用語言,旨在取代 Objective-C。Swift 可用于編寫 iOS 和 Mac 桌面應用程序,蘋果公司將其開源,希望它能夠成為服務器語言。遺憾的是,希望暫時落空。



          在 Web 開發(fā)領域,PHP 仍然十分盛行。盡管 PHP 語言存在很多局限性,并且市面上有很多針對它的替代品,但是 PHP 如今仍然被許多大型網(wǎng)站使用,例如 Facebook 和維基百科。Facebook 甚至創(chuàng)建了自己的 PHP 改良版,名為Hack。PHP 也是許多大型開源平臺使用的語言,例如 WordPress 和 MediaWiki。這些平臺得到了廣泛的應用,PHP 用于為它們創(chuàng)建插件。Facebook 仍然熱衷于使用 PHP,甚至還創(chuàng)建了自己的現(xiàn)代化版本的 PHP: Hack 語言。Ruby 就是一個PHP 的完美替代品,它更加現(xiàn)代并且設計得更好。Ruby on Rails Web 開發(fā)框架得到了廣泛的部署,并擁有有龐大而活躍的社區(qū)。



          在一些更加專業(yè)的領域,比如系統(tǒng)編程領域,谷歌的 Go 和 Mozilla 的 Rust 看起來都很不錯。兩種語言都旨在構建高并發(fā)的系統(tǒng)。在函數(shù)式編程領域,Elixir 是 Erlang 的替代品,Clojure 是一種在 JVM 上運行的新型的 Lisp,而 F#是一種在 .NET 上運行并具有許多主流功能的函數(shù)式語言。最后,如果你對快速增長的智能合約和基于以太坊的加密貨幣領域感興趣,你可以了解一下 Solidity。



          結論:選擇正確的語言


          在榜單的五種語言中,你應當如何選擇適合自己的語言呢?根據(jù)當前趨勢,具有最廣泛應用的最通用語言是 JavaScript。你可以在大多數(shù)設備上運行它,并使用它來構建客戶端、服務器和無服務器應用程序。在過去的十年中,JavaScript 已經(jīng)被不斷改造,它現(xiàn)在與 C# 和 Lisp 等現(xiàn)代語言有很多共同之處。是的,它仍然有一些不足之處,但這些缺點已經(jīng)得到了很大改善。

          我們的第二選擇是 Python,從開發(fā)者職業(yè)生涯長期來看,Python 是非常好的選擇。正如我們提到的那樣,Python 已經(jīng)廣泛應用到科研和教育領域。它也是機器學習、人工智能和數(shù)據(jù)科學相關領域的主導語言。在構建用戶界面時,JavaScript 比 Python 具有明顯的優(yōu)勢。但隨著時間的推移,這種優(yōu)勢可能會不再顯著。對于初學者來說,Web Assembly 標準使得其他高級語言來編寫基于瀏覽器的應用程序變成可能。此外,如果語音交互得到大眾認可,那么圖形用戶界面將變得不再那么重要。亞馬遜采用 Python 來開發(fā) Echo 語音助手,因此 Python 已經(jīng)在該領域占據(jù)了先機。

          在企業(yè)級應用領域,你需要在 Java 和 C#之間進行選擇。這兩種語言在語法、功能和基礎結構方面都非常相似,你可以根據(jù)個人偏好、工作可用性或者擲硬幣的方法來做出選擇。正如我們指出的那樣,Java 比 C#歷史更為久遠、更受歡迎,并且提供的職位更多。而另一方面,微軟的積極支持及其使 C#成為真正的跨平臺解決方案的動力又為 C#的未來奠定了更好的前景。Java 仍然是 Android 的編程語言,但微軟的 Xamarin 允許開發(fā)者使用 C#編寫 Android、iOS 和 Mac 應用程序。需要知道的是,C#在創(chuàng)業(yè)社區(qū)聲譽不好,在硅谷非常不受歡迎。在這些圈子中,C#開發(fā)人員通常被視為二等公民。

          此外,開發(fā)者還需要注意的是,在申請 Java / C#企業(yè)級開發(fā)職位時,面試官將會考察你構建后端應用程序的能力,而不會局限某種語言。在解決實際問題時,你需要為解決方案編寫具體的代碼,這樣你就可以在解決實際問題的同時展示自己對語言功能的了解程度。

          最后,C 和 C ++都算作通用語言,但在實踐中,它們主要用于特定領域。C 語言主要用于系統(tǒng)和嵌入式編程,C ++ 則擅長高性能以及資源密集型應用程序,比如實時圖形應用程序。它們兩者在各自的領域中很少有替代者,你應該在需要構建這些類型的應用程序時選擇學習這些語言。

          最重要的是,在參加編程面試時,請確保自己了解這門語言的方方面面。通過面試并非易事,你需要對編程語言的優(yōu)勢以及局限性足夠了解,以便讓自己的求職之路變得輕松。

          原文:https://hackernoon.com/best-coding-languages-to-learn-in-2019-b49b49250a25本文為 CSDN 翻譯,如需轉載,請注明來源出處。

          主站蜘蛛池模板: 国产在线乱子伦一区二区| 亚洲图片一区二区| 亚洲av无码一区二区三区天堂| 波多野结衣中文一区| 久久人妻av一区二区软件| 一区二区三区在线视频播放| 国产福利酱国产一区二区| 97久久精品一区二区三区| 一区二区三区免费在线观看| 国产一区二区在线| 亚洲av色香蕉一区二区三区蜜桃| 亚洲国产精品一区二区第一页| 中文字幕一区二区三区视频在线| 国产成人一区二区三区| 伊人无码精品久久一区二区| 久久久国产精品亚洲一区| 精品国产日产一区二区三区 | 无码日韩精品一区二区人妻| 亚洲日韩一区精品射精| 91久久精品一区二区| 亚洲国产精品综合一区在线 | 亚洲国产一区国产亚洲| 岛国无码av不卡一区二区| 国精产品一区二区三区糖心| 国产凹凸在线一区二区| 伊人久久大香线蕉av一区| 久草新视频一区二区三区| 久久久久99人妻一区二区三区| 亚洲爆乳无码一区二区三区| 亚洲AV综合色区无码一区| 精品女同一区二区三区在线| 国产精品视频免费一区二区| 亚洲av无码一区二区三区四区| 尤物精品视频一区二区三区| 日本无卡码免费一区二区三区| 国产一区二区三区电影| 夜夜精品无码一区二区三区| 久久国产精品免费一区二区三区| 国产在线精品一区二区中文| 日韩一区二区三区无码影院| 亚洲无码一区二区三区|