Atrof muhitni standartlashtirish
Yilda Java aniq kirish va chiqish, grafika, geometriya, muloqot, axborot va ilovalar boshqa turdagi ma'lumotlar bazalari uchun kirish uchun standartlar erda belgilangan. C ++ bu borada ancha bepul . Agar dasturchi o'z standartini belgilashni xohlasa, grafika standartlari, ma'lumotlar bazasiga kirish va boshqalar.
C ++ past darajadagi ko'rsatkichlar bilan ishlash qobiliyatini saqlab qoladi. Bor bo'lgan hech mayoqlar bilan Java . Markerni foydalanish ko'pincha sabab bo'ladi qattiq-to-top xatolar, lekin past darajadagi dasturlash uchun muhim ahamiyatga ega. Asosan, C ++ qo'lda xotira ajratish va tarqatish va xavfli ko'rsatkich operatsiyalarini deyarli butunlay yo'q qilishga imkon beradigan vositalar to'plamiga (konstruktorlar va buzuvchilar, standart andozalar, havolalar) ega. Biroq, bunday istisno ma'lum dasturlash madaniyatini talab qiladi, Java tilida esa u avtomatik ravishda amalga oshiriladi.
C ++ dan farqli o'laroq , Java sof ob'ektga yo'naltirilgan til bo'lib, protsessual dasturlash imkoniyati yo'q. Java-da bepul funktsiyalarni yoki global o'zgaruvchilarni e'lon qilish uchun siz faqat statik a'zolarni o'z ichiga olgan dummy sinflarini yaratishingiz kerak . Hatto eng sodda Java dasturining asosiy funktsiyasini aniqlash uchun uni sinfga kiritish kerak.
Dinamik tipdagi ma'lumotlar
C ++ RTTI-da ob'ekt turlarini bir-biri bilan va turlarning asl qiymati bilan taqqoslash imkoniyati cheklangan . Turlar haqida batafsil ma'lumot Java tizimida mavjud . Ushbu imkoniyat CTTI kompilyatsiya qilinayotganda to'liq ma'lumot bilan C ++ da amalga oshirilishi mumkin.
C ++ funktsiyalar va sinflar ta'riflarini kiritish uchun, dastlabki kodda to'liq bajarilgan kutubxonalarni o'z ichiga olgan holda preprosessordan foydalanadi, shuningdek, yuqori darajadagi kodlarni ko'paytirishning murakkab muammolarini hal qiladigan preprosessor yordamida metaprogrammalashtirishga imkon beradi [8]. Ushbu mexanizm xavfli emas degan fikr mavjud, chunki protrosessorlarning makroslari nomlari global va makroslarning o'zlari til konstruktsiyalari bilan deyarli hech qanday aloqasi yo'q. Bu murakkab nomlarning ziddiyatlariga olib kelishi mumkin. Boshqa nuqtai nazardan, C ++ protsessorni deyarli butunlay yo'q qilish uchun etarli imkoniyatlarni (konstantalar, shablonlar, o'rnatilgan funktsiyalar) beradi. Java preprotsessorni to'liq yo'q qildi, undan foydalanish bilan bog'liq bo'lgan barcha muammolarni birdaniga bartaraf qildi, shu bilan tildan foydalangan holda preprosessorni va kodni tarkibidagi matnlarni almashtirish imkoniyatini yo'qotdi .
Tillar orasidagi tafovutlar, qaysi til yaxshiroq ekanligi haqida ikki til tarafdorlari o'rtasida shov-shuvli tortishuvlarga olib keladi. Munozara asosan befoyda, chunki Java tarafdorlari farqlar Java foydasiga , C ++ tarafdorlari esa buning aksini ko'rishadi . Ba'zi bir munozaralar vaqt o'tishi bilan eskirgan , masalan, kompyuterda ishlash portlashi va yanada samarali ijro etish texnikasi (JIT) paydo bo'lishi natijasida 90-yillarning birinchi yarmida rost bo'lgan ish vaqti muhiti mavjudligi sababli Java- dagi samarasizlik ayblovlari o'z ahamiyatini yo'qotdi. O'z navbatida C ++ rivojlanib, uning bir qator kamchiliklari standartning so'nggi versiyalarida yo'q qilindi (masalan, shablonlarni qisman spetsifikatsiya qilish mexanizmi paydo bo'ldi).
Hamma dasturchilar ham bir tilning tarafdorlari emas. Ko'pgina dasturchilarning fikriga ko'ra, Java va C ++ raqobatchilar emas, chunki ular turli sohalarga ega. Boshqalar, ko'p vazifalar uchun tilni tanlash shaxsiy didga bog'liq deb hisoblashadi.
Endi til farqini ko'rib chiqaylik
“Hello, World”
C
#include
int main(int argc, char ** argv)
{
printf(“Hello, World\n”);
}
Java
public class Hello
{
public static void main(String, argv[])
{
System.out.prinyln(“Hello, World”);
}
}
Python
print “Hello, World”
Квадратное уравнение ax2 + bx + c = 0 на C++, java, paskal лучше всего решать с помощью формулы, содержащей дискриминант:
D = b2 - 4ac,
Paskal
Do'stlaringiz bilan baham: |