C++ ба Java: C++ ба Java хоёрын жишээтэй 30 ялгаа

Энэхүү гүнзгий заавар нь объект хандалтат програмчлалын хоёр хэлний C++ ба Java-ийн хоорондох гол ялгааг тайлбарласан болно:

C++ болон Java нь объект хандалтат програмчлалын хэл юм. Гэсэн хэдий ч хоёр хэл нь бие биенээсээ олон талаараа ялгаатай.

С++ нь Си хэлнээс гаралтай бөгөөд процедурын болон объект хандалтат програмчлалын хэлний аль алиных нь онцлог шинж чанартай байдаг. C++ нь программ хангамж болон системийг хөгжүүлэхэд зориулагдсан болно.

Java нь маш аюулгүй, зөөврийн шинж чанартай виртуал машин дээр бүтээгдсэн. Энэ нь одоо байгаа платформыг хийсвэрлэхэд дэмжлэг үзүүлэх зорилгоор иж бүрэн номын сантай бүлэглэгдсэн.

Java нь ихэвчлэн хэрэглээний програмчлалд зориулагдсан бөгөөд хэвлэх системд зориулсан орчуулагчийн функцтэй бөгөөд хожим сүлжээний тооцоолол болгон хөгжүүлсэн.

Уншихыг санал болгож буй => C++-ийн бүх хүмүүст зориулсан сургалтын гарын авлага

C++ ба Java хоорондын үндсэн ялгаа

Одоо энэ

зааварыг үргэлжлүүлэх явцдаа C++ ба Java-ийн гол ялгаануудын талаар ярилцъя.

#1) Платформ Independence

C++ Java
C++ бол платформоос хамааралтай хэл юм.

C++ хэл дээр бичигдсэн эх кодыг платформ бүр дээр эмхэтгэх шаардлагатай.

Java нь платформоос хамааралгүй.

Байт код болгон хөрвүүлсний дараа ямар ч платформ дээр ажиллах боломжтой.

#2) Эмхэтгэгч бацуглуулга. 10 Зөөврийн чадвар C++ код зөөврийн биш. Java зөөврийн. 11 Төрөл семантик Команд болон объектын төрлүүдийн хооронд нийцдэг. Тогтворгүй. 12 Оролтын механизм Cin болон Cout нь I/O-д ашиглагддаг. System.in болон System.out.println 13 Хандалтын хяналт ба объектын хамгаалалт Уян объектын загвар ба тууштай хамгаалалт. Объектийн загвар нь нүсэр бөгөөд капсулжуулалт сул. 14 Санах ойн менежмент Гарын авлага Системийн удирдлагатай. 15 Олон удамшил Одоогийн Байхгүй 16 Гото мэдэгдэл Гото хэллэгийг дэмждэг. Гото хэллэгийг дэмждэггүй. 17 Хамрах хүрээг тодорхойлох оператор Одоо Байхгүй 18 Оролдох/Багах блок Оролдох/барах блокийг хасч болно. Хэрэв код нь онцгой тохиолдол гаргах ёстой бол хасах боломжгүй. 19 Хэт ачаалал Оператор болон аргын хэт ачааллыг дэмждэг. Операторын хэт ачааллыг дэмждэггүй. 20 Виртуал түлхүүр үг Дараах боломжийг хөнгөвчлөх виртуал түлхүүр үгийг дэмждэг. Виртуал түлхүүр үг байхгүй, бүх статик бус аргууд нь анхдагчаар виртуаль бөгөөд дарагдсан. 21 Ажиллах үеийн алдааИлрүүлэх Программист үлдээсэн. Системийн хариуцлага 22 Хэлний дэмжлэг Голчлон системд ашигладаг. програмчлал. Голчлон хэрэглээний програмчлалд ашигладаг. 23 Өгөгдөл ба функцүүд Өгөгдөл ба функцууд ангиас гадуур байдаг. Глобал болон нэрийн орон зайг дэмждэг. Өгөгдөл болон функцууд нь зөвхөн анги дотор байдаг ба багцын хамрах хүрээ боломжтой. 24 Заагч Заагчийг дэмждэг. Зөвхөн заагчийг дэмждэг. 25 Бүтэц & Холбоо Дэмжигдсэн Дэмжигдээгүй 26 Объектийн менежмент Шинэ болон устгах боломжтой объектын удирдлага . Хог цуглуулах ашиглан объектын автомат удирдлага. 27 Параметр дамжуулах Утгаар болон лавлагаагаар дуудлага хийхийг дэмждэг. Зөвхөн утгаараа дуудлагыг дэмждэг. 28 Утаснуудын дэмжлэг Утасны дэмжлэг нь тийм ч хүчтэй биш, энэ нь гуравдагч этгээд. Маш хүчтэй урсгалтай дэмжлэг. 29 Тоног төхөөрөмж Техник хангамжид ойр. Техник хангамжийн хувьд тийм ч идэвхтэй биш. 30 Баримт бичгийн тайлбар Баримт бичгийн тайлбарыг дэмждэггүй. Баримт бичгийн тайлбарыг дэмждэг( /**…*/) нь Java эх кодын баримт бичгийг үүсгэдэг.

Одоогоор бид үндсэн ялгааг олж харлаа.C++ болон Java хооронд дэлгэрэнгүй. Удахгүй гарах хэсэг нь програмчлалын ертөнцөд C++ болон Java хэлтэй холбоотой байнга асуудаг асуултуудад хариулах болно.

C++ болон Java хэл дээр байнга асуудаг асуултууд

Асуулт #1) Аль нь вэ илүү сайн C++ эсвэл Java?

Хариулт: Бид аль нь илүү болохыг тодорхой хэлж чадахгүй. C++ болон Java аль аль нь өөрийн гэсэн давуу болон сул талуудтай. C++ нь системийн програмчлалд ихэвчлэн сайн байдаг ч бид үүнийг Java-ээр хийж чадахгүй. Гэхдээ Java вэб, ширээний компьютер гэх мэт программууд дээр маш сайн байдаг.

Үнэндээ C++ нь системийн програмчлалаас эхлээд энтерпрайз, тоглоом тоглох хүртэл юу ч хийж чадна. Java нь вэб эсвэл аж ахуйн нэгжээс илүү ихийг хийж чадна. Доод түвшний програмчлалын программууд, тоглоом тоглох гэх мэт зарим программуудыг Java-д үлдээх боломжгүй байдаг.

Тиймээс бидний ямар програм боловсруулж байгаагаас шалтгаална. Хамгийн сайн арга бол хоёр хэлний давуу болон сул талуудыг урьдчилан үнэлж, бидний хөгжүүлж буй програмын онцлог шинжийг шалгаж, аль нь хамгийн сайн болохыг дүгнэх явдал юм.

Асуулт №2) C++ мөн үү. Java-аас хүчтэй юу?

Хариулт: Энэ дахиад л төвөгтэй асуулт байна! Синтакс эсвэл хэл сурахад хэр хялбар вэ гэхээр Java оноо авдаг. Системийн програмчлал болон/эсвэл бусад доод түвшний программуудын тухайд C++ илүү хүчтэй байдаг.

Зарим хүмүүс автомат GC цуглуулгатай, заагч байхгүй, олон тоо байхгүй гэж маргаж магадгүй.Өв залгамжлал нь Java-г илүү хүчирхэг болгодог.

Гэхдээ хурдны тухайд C++ хүчирхэг байдаг. Мөн бид мужийг хадгалах шаардлагатай тоглоом гэх мэт програмуудад хог хаягдлыг автоматаар цуглуулах нь даалгаврыг сүйтгэж болзошгүй юм. Тиймээс C++ энд хүчтэй байгаа нь ойлгомжтой.

Асуулт №3) Бид C эсвэл C++ мэдэхгүй байж Java хэл сурч чадах уу?

Хариулт: Тийм ээ, гарцаагүй!

Бид програмчлалын үндэс ба объект хандалтат програмчлалын ойлголтуудыг мэдсэний дараа Java-г сурч эхлэх боломжтой.

Асуулт №4) C++ нь Java шиг үү?

Хариулт: Зарим талаараа Тийм, гэхдээ зарим талаараа Үгүй.

Жишээ нь C++ болон Java нь объект хандалтат програмчлалын хэл юм. Тэдгээрийг програм боловсруулахад ашиглаж болно. Тэд ижил төстэй синтакстай.

Гэхдээ санах ойн менежмент, удамшил, полиморфизм гэх мэт бусад тохиолдолд C++ болон Java нь огт өөр байдаг. Үүний нэгэн адил, анхдагч өгөгдлийн төрлүүд, объекттой харьцах, заагч гэх мэт хэл нь өөр өөр байдаг.

Асуулт №5) Java нь C++ хэл дээр бичигдсэн үү?

Хариулт: Жава гэдэг утгаараа Sun болон IBM-ийн Java Virtual Machine (JVM) нь C++ хэл дээр бичигдсэн. Java номын сангууд Java хэл дээр байдаг. Бусад зарим JVM нь C хэл дээр бичигдсэн байдаг.

Дүгнэлт

C++ болон Java нь объект хандалтат програмчлалын хэл юм. Үүнээс гадна C++ бол процедурын хэл юм. Өв залгамжлал, полиморфизм, заагч, санах ойн менежмент гэх мэт зарим шинж чанарууд байдагХэлнүүд бие биенээсээ бүрэн ялгаатай.

С++ хэл нь техник хангамжтай ойр, объектын илүү сайн удирдлага, хурд, гүйцэтгэл гэх мэт зарим шинж чанаруудтай бөгөөд энэ нь түүнийг Java-ээс илүү хүчирхэг болгож, хөгжүүлэгчдэд C++ ашиглах сэдэл төрүүлдэг. доод түвшний програмчлал, өндөр хурдны тоглоомын программууд, системийн програмчлал гэх мэт.

Үүнтэй адил Java-н хялбар синтакс, хог хаягдлыг автоматаар цуглуулах, заагч, загвар дутмаг зэрэг нь Java-г дуртай болгодог. вэбд суурилсан програмуудад зориулагдсан.

Орчуулагч
C++ Java
С++ бол эмхэтгэсэн хэл юм.

Эх сурвалж C++ хэл дээр

бичигдсэн программыг объектын код болгон хөрвүүлж, дараа нь гаралт гаргахын тулд ажиллуулж болно.

Java нь хөрвүүлсэн болон тайлбарласан програм юм. хэл.

Java эх кодын эмхэтгэсэн гаралт нь платформоос хамааралгүй байт код юм.

#3) Зөөврийн чадвар

C++ Java
C++ код нь зөөврийн биш.

Үүнийг хөрвүүлсэн байх ёстой. платформ бүр.

Гэхдээ Java нь кодыг байт код болгон хөрвүүлдэг.

Энэ байт код нь зөөврийн бөгөөд ямар ч платформ дээр ажиллах боломжтой.

#4) Санах ойн менежмент

C++ Java
С++ хэл дээрх санах ойн менежментийг гараар хийдэг.

Бид шинэ/устгах операторуудыг ашиглан санах ойг гараар хуваарилах/хоцруулах шаардлагатай.

Java-д санах ойн удирдлага нь системээр хянагддаг.

#5) Олон удамшил

C++ Java
С++ нь дан болон олон удамшил гэх мэт төрөл бүрийн өв залгамжлалыг дэмждэг.

Хэдийгээр олон удамшилтай холбоотой асуудал гардаг ч C++ нь асуудлыг шийдвэрлэхийн тулд виртуал түлхүүр үгийг ашигладаг.

Java нь зөвхөн ганц өв залгамжлалыг дэмждэг.

Олон удамшлын үр нөлөөг Java дахь интерфейсийг ашиглан хийж болно.

#6)Хэт ачаалал

C++ Java
С++ хэл дээр аргууд болон операторууд хэт ачаалалтай байдаг. Энэ бол статик полиморфизм юм. Java-д зөвхөн аргын хэт ачааллыг зөвшөөрдөг.

Энэ нь операторын хэт ачааллыг зөвшөөрдөггүй.

#7) Виртуал түлхүүр үг

C++ Java
Динамик полиморфизмын нэг хэсэг болох , C++ хэл дээр виртуал түлхүүр үг нь үүсмэл ангилалд дарагдаж болох функцийг заах функцтэй хамт хэрэглэгддэг. Ингэснээр бид полиморфизмд хүрч чадна. Java-д виртуал түлхүүр үг байхгүй. Гэсэн хэдий ч Java хэл дээр анхдагчаар бүх статик бус аргуудыг хүчингүй болгож болно.

Эсвэл энгийнээр хэлбэл Java дахь бүх статик бус аргууд нь анхдагчаар виртуаль байдаг.

#8) Заагч

C++ Java
C++ заагчтай холбоотой.

Өмнө нь зааварчилгаанаас харж байгаачлан C++ нь заагчийг маш сайн дэмждэг бөгөөд бид заагч ашиглан маш олон хэрэгтэй програмчлал хийж чадна.

Java нь заагчийг хязгаарлагдмал дэмждэг.

Эхэндээ Java нь заагчгүй байсан боловч дараагийн хувилбарууд нь заагчдад хязгаарлагдмал дэмжлэг үзүүлж эхэлсэн.

Бид Java хэл дээрх заагчийг C++-д ашигладаг шиг хялбархан ашиглах боломжгүй.

#9) Баримт бичгийн тайлбар

C++ Java
C++ нь баримт бичгийн тайлбарыг дэмждэггүй. Java нь баримтжуулалтыг дэмждэг.сэтгэгдэл (/**…*/). Ингэснээр Java эх файлууд өөрийн гэсэн бичиг баримттай болно.

#10) Thread Support

C++ Java
C++ нь суулгасан thread-ийн дэмжлэггүй. Энэ нь ихэвчлэн гуравдагч талын урсгалын сангууд дээр тулгуурладаг. Java нь "thread" анги бүхий суулгасан thread дэмжлэг юм. Бид урсгалын ангиллыг өвлөн аваад дараа нь ажиллуулах аргыг дарж болно.

Өөр хэдэн ялгаа...

#11) Root Hierarchy

C++ нь процедурын төдийгүй объект хандалтат програмчлалын хэл юм. Тиймээс энэ нь ямар нэгэн тодорхой язгуур шатлалыг дагадаггүй.

Java нь цэвэр объект хандалтат програмчлалын хэл бөгөөд нэг язгуур шатлалтай.

#12 ) Эх код & AMP; Ангийн харилцаа

С++ хэлэнд эх код болон файлын нэр хоёулаа ямар ч хамааралгүй. Энэ нь бид C++ программ дээр олон ангитай байж болох ба файлын нэр нь юу ч байж болно гэсэн үг. Энэ нь ангийн нэрстэй адил байх албагүй.

Java-д эх кодын анги болон файлын нэр хоорондоо нягт холбоотой байдаг. Эх код болон файлын нэрийг агуулсан анги ижил байх ёстой.

Жишээ нь , хэрэв бидэнд Java хэл дээр цалин гэж нэрлэгддэг анги байгаа бол энэ ангийн кодыг агуулсан файлын нэр " байх ёстой. цалин.java”.

#13 ) Үзэл баримтлал

С++ програмын цаад ойлголтыг нэг удаа бичээд хаана ч эмхэтгэдэг учир нь C++ биш юм.платформоос хамааралгүй.

Харин, Java программуудын хувьд энэ нь нэг удаа бичигдсэн бөгөөд Java хөрвүүлэгчийн үүсгэсэн байт код нь платформоос хамааралгүй бөгөөд ямар ч машин дээр ажиллах боломжтой тул хаана ч, хаана ч ажилладаг.

#14 ) Бусад хэлтэй нийцтэй байдал

C++ нь C дээр бүтээгдсэн. C++ хэл нь бусад өндөр түвшний хэлнүүдийн ихэнхтэй нийцдэг.

Java бусад хэлтэй тохирохгүй байна. Java хэл нь C ба C++ хэлнээс санаа авсан тул синтакс нь эдгээр хэлтэй төстэй.

#15 ) Програмчлалын хэлний төрөл

C++ нь процедур ба объект хандалтат програмчлалын хэл. Тиймээс C++ нь процедурын хэлнүүдийн онцлогоос гадна объект хандалтат програмчлалын хэлний онцлог шинж чанартай байдаг.

Java бол бүрэн объект хандалтат програмчлалын хэл юм.

#16 ) Номын сангийн интерфейс

C++ нь үндсэн системийн номын сан руу шууд залгах боломжийг олгодог. Тиймээс энэ нь системийн түвшний програмчлалд илүү тохиромжтой.

Java нь өөрийн төрөлх номын сан руу шууд залгах дэмжлэггүй. Бид Java Native Interface эсвэл Java Native Access-ээр дамжуулан номын сангуудыг дуудаж болно.

#17 ) Ялгах онцлогууд

Процедурын хэлтэй холбоотой онцлогууд болон Объект хандалтат хэл нь C++ хэлийг ялгах онцлог юм.

Хог хаягдлыг автоматаар цуглуулах нь Java хэлийг ялгах онцлог юм. Үүний зэрэгцээ Java нь устгагчийг дэмждэггүй.

#18 ) ТөрөлУтга зүй

С++-ийн төрлийн семантикийн хувьд команд болон объектын төрлүүд хоорондоо уялдаатай байдаг.

Гэхдээ Java-ийн хувьд команд болон объектын төрлүүдийн хооронд уялдаа холбоо байхгүй.

#19 ) Оролтын механизм

С++ нь cin болон cout-г '>>' болон '' операторуудын хамт тус тус ашигладаг. уншиж, өгөгдлийг бичнэ.

Java хэлэнд System анги нь оролт гаралтад ашиглагддаг. Оролтоо уншихын тулд нэг байт уншдаг System.in-ийг ашигладаг. Гаралтыг бичихэд System.out-ийг ашигладаг.

#20) Хандалтын хяналт ба объектын хамгаалалт

С++ нь уян хатан загвартай. хандалтыг хянадаг хандалтын тодорхойлогчтой объектууд ба хамгаалалтыг хангадаг хүчтэй инкапсуулга.

Java нь сул инкапсуллал бүхий харьцангуй төвөгтэй объектын загвартай.

#21) Явах мэдэгдэл

C++ нь goto хэллэгийг дэмждэг боловч программ дээр ашигласнаар гарах үр дагавраас урьдчилан сэргийлэхийн тулд түүний хэрэглээг багасгах хэрэгтэй.

Java нь goto хэллэгийг дэмждэггүй.

#22 ) Хамрах хүрээг тодорхойлох оператор

Хамрах хүрээг тодорхойлох оператор нь глобал хувьсагчдад хандах, ангиас гадуурх аргуудыг тодорхойлоход хэрэглэгддэг.

C++ нь глобал хувьсагчдад хандахдаа ашигладаг тул хамрах хүрээний нарийвчлалын операторыг дэмждэг. Мөн энэ нь бидэнд ангиас гадуур функцүүдийг тодорхойлж, хамрах хүрээний нарийвчлалын операторыг ашиглан тэдгээрт хандах боломжийг олгодог.

Харин,Java нь хамрах хүрээний нарийвчлалын операторыг дэмждэггүй. Java нь гаднах функцийг тодорхойлохыг зөвшөөрдөггүй. Програмтай холбоотой бүх зүйл, түүний дотор үндсэн функц нь анги дотор байх ёстой.

#23 ) Try/Catch Block

C++ хэл дээр, Бид код нь үл хамаарах зүйл үүсгэж болзошгүйг мэдэж байсан ч try/catch блокыг хасч болно.

Гэсэн хэдий ч, Java хэл дээр, хэрэв бид код нь онцгой тохиолдол гаргах болно гэдэгт итгэлтэй байвал бид энэ кодыг доор оруулах ёстой. try/catch блок. Java хэл дээр үл хамаарах зүйлүүд нь устгагчийг дэмждэггүй тул өөр өөр байдаг.

#24 ) Ажиллах үеийн алдаа илрүүлэх

C++ дээр ажиллах үеийн алдаа илрүүлэх програмистын хариуцлага.

Java-д ажиллах үеийн алдаа илрүүлэх нь системээр хянагддаг.

#25 ) Хэлний дэмжлэг

Техник хангамж, системийн нөөцөд хандах боломжийг олгодог номын сангуудтай ойр байдаг тул C++ нь системийн програмчлалд илүү тохиромжтой боловч бидэнд C++ хэл дээр боловсруулсан мэдээллийн сан, аж ахуйн нэгж, тоглоом гэх мэт өргөн хүрээний програмууд байдаг.

#26 ) Өгөгдөл ба функцууд

С++ нь нэрийн орон зайн хүрээнээс гадна дэлхийн хамрах хүрээтэй. Иймд өгөгдөл болон функцууд нь ангиас гадуур ч байж болно.

Java-д бүх өгөгдөл болон функцүүд ангид байх ёстой. Глобал хамрах хүрээ байхгүй ч багцын хамрах хүрээ байж болно.

#27 ) Бүтэц & Холбоо

Бүтэц, холбоо нь өгөгдөл юмөөр өөр өгөгдлийн төрөлтэй гишүүдтэй байж болох бүтэц. C++ нь бүтэц болон нэгдлүүдийг хоёуланг нь дэмждэг.

Гэхдээ Java нь бүтэц, холбоог дэмждэггүй.

#28 ) Объектийн менежмент

С++ хэл дээр объектуудыг гараар удирддаг. Объектуудыг үүсгэх, устгах ажлыг шинэ, устгах операторуудыг ашиглан гараар гүйцэтгэдэг. Бид мөн ангийн объектуудад бүтээгч болон устгагч ашигладаг.

Java нь бүтээгчийг дэмждэг ч устгагчийг дэмждэггүй. Java нь мөн объект цуглуулах, устгах автомат хог цуглуулахаас ихээхэн хамааралтай байдаг.

#29 ) Параметр дамжуулалт

Утгаар дамжуулалт and pass by reference нь програмчлалд хэрэглэгддэг параметр дамжуулах хоёр чухал арга юм. Java болон C++ аль аль нь эдгээр техникийг хоёуланг нь дэмждэг.

#3 0) Тоног төхөөрөмж

С++ нь техник хангамжтай ойрхон бөгөөд үүнийг удирдах боломжтой олон номын сантай. техник хангамжийн нөөц. Техник хангамжид ойр байдаг тул C++ нь ихэвчлэн системийн програмчлал, тоглоомын программууд, үйлдлийн систем, хөрвүүлэгчид ашиглагддаг.

Java нь ихэвчлэн программ хөгжүүлэлтийн хэл бөгөөд техник хангамжид ойр байдаггүй.

Хүснэгтийн формат: C++ Vs Java

Бидний өмнө хэлэлцсэн C++ болон Java хэлийг харьцуулах хүснэгтийн дүрслэлийг доор өгөв.

Үгүй ХарьцуулалтПараметр C++ Java
1 Платформын бие даасан байдал C++ нь платформоос хамааралтай. Java нь платформоос хараат бус юм.
2 Хэвлэгч & Орчуулагч С++ бол эмхэтгэсэн хэл юм. Java бол эмхэтгэхийн зэрэгцээ тайлбарлах хэл юм.
3 Эх сурвалж Код & AMP; Ангийн харилцаа Ангийн нэр болон файлын нэртэй хатуу харилцаа байхгүй. Ангийн нэр болон файлын нэрийн хооронд хатуу харилцаа тогтооно.
4 Үзэл баримтлал Хаа ч нэг эмхэтгэхэд нэг удаа бичнэ. Хаана ч нэг удаа ажиллуулна & хаа сайгүй.
5 Бусад хэлтэй нийцтэй байх Объект хандалтат шинж чанаруудаас бусад тохиолдолд Си хэлэнд нийцдэг. Синтакс нь C/C++-ээс авсан.

Бусад хэлтэй хоцрогдсон нийцэхгүй.

6 Програмчлалын хэлний төрөл Процедур ба объект хандалттай. Объект хандалттай.
7 Номын сангийн интерфейс Үндсэн системийн номын сан руу шууд дуудлага хийхийг зөвшөөрдөг. Зөвхөн Java Native интерфейс болон Java Native-ээр дамжуулан дуудлага хийнэ. Хандалт.
8 Үндэсний шатлал Үндэсний шатлал байхгүй. Нэг язгуур шатлалыг дагадаг.
9 Ялгах шинж чанарууд Процедурын болон объект хандалтат функцуудыг дэмждэг. Устгагч байхгүй. Автомат хог
Дээд тал рүү орох