কেন আরও ডেস্কটপ অ্যাপ্লিকেশন Qt দিয়ে লেখা হয় না? [বন্ধ]


202

আমি যতদূর জানি এবং কিউটিটির সাথে আমার অভিজ্ঞতার মধ্যে বুঝতে পেরেছি, এটি একটি খুব ভাল এবং সহজ লাইব্রেরি শিখতে হবে। এটির খুব ভাল ডিজাইন করা এপিআই রয়েছে এবং এটি ক্রস প্ল্যাটফর্ম এবং এটি আকর্ষণীয় করে তুলতে এমন অনেকগুলি বৈশিষ্ট্যের মধ্যে কেবল দুটি। আমি আরও আগ্রহী কেন আরও প্রোগ্রামার Qt ব্যবহার করে না তা জানতে আগ্রহী। এর বিরুদ্ধে কথা বলার কি কোনও অভাব আছে? কোন বৈশিষ্ট্য Qt এর চেয়ে বেশি অন্যান্য গ্রন্থাগারগুলিকে উন্নত করে? বিষয়টি কি লাইসেন্সিংয়ের সাথে সম্পর্কিত?


60
এটি নেটিভ সি ++। বেশিরভাগ বিকাশকারী উচ্চতর স্তরের ভাষা যেমন সি # পছন্দ করবেন।
ব্যবহারকারী16764

15
পিছনের সামঞ্জস্যের দ্বি-তরোয়ালটি কিউটি ছেড়ে গেছে বহু অ্যানোক্রোনিজম, অব্যর্থযোগ্য ত্রুটি এবং অন্যান্য খারাপ আচরণ with
এডিএ-কিএ মার্ট-ওরা-y

26
@ ব্যবহারকারী16764: "সর্বাধিক"?
অরবিটে

17
আমি মনে করি না টিআইওবি সূচকটি সত্যই একটি সঠিক পরিমাপ, কারণ এটি জনপ্রিয়তার পরিমাপ করে না, ব্যবহার করে না। গিটহাব, বিটবকেট, কোডপ্লেক্স এবং সোর্সফোর্জের মতো ওপেন সোর্স রিপোজিটরিগুলিতে কোডের পরিমাণের তুলনা করলে আরও সঠিক পরিমাপ হবে। (এবং আমি বিশ্বাস করি যে এই আরও সঠিক পরিমাপের ফলে সি এবং সি ++ # 1 এবং # 2 স্পটে রয়েছে - জাভা টিআইওবি সূচকে অন্যায়ভাবে সুবিধাজনক কারণ এটি নতুন কলেজের কোর্সগুলির জন্য ব্যবহৃত হয়, এবং নতুন প্রোগ্রামার অভিজ্ঞদের তুলনায় আরও গুঞ্জন দেয়)
বিলি ওনিল

12
@ জর্জিও: এরম, আপনাকে সি # তে এই জাতীয় জিনিসগুলি নিয়ে ভাবতে হবে। "যার মালিক এটি" এর ধারণা "কে ডাকে delete" এর চেয়ে অনেক বেশি এগিয়ে যায় । স্মার্ট পয়েন্টাররা যে স্পষ্ট করে তোলে তা কোনও ভাষা ব্যর্থ হয় না; এবং যদি আপনি এই জাতীয় জিনিসগুলি সম্পর্কে চিন্তা না করেন তবে আপনি যে কোনও উচ্চ স্তরের ভাষায় আমিও দেখেছি আবর্জনা তৈরি করতে চলেছি।
বিলি ওনিল

উত্তর:


177

আমি সত্যিই এটিকে ধমক দেওয়ার উত্তর হওয়ার ইচ্ছা করি না, তবে এইগুলি কারণগুলি আমি ব্যক্তিগতভাবে Qt ব্যবহার করি না। এ সম্পর্কে বলার জন্য প্রচুর ভাল জিনিস রয়েছে - যথা এপিআই বেশিরভাগ সময় কাজ করে এবং এটি নির্বিঘ্নে ব্রিজ প্ল্যাটফর্মগুলি করে। তবে আমি কিউটি ব্যবহার করি না, কারণ:

  1. কিছু ক্ষেত্রে, এটি কেবল নেটিভ প্রোগ্রামগুলির মতো লাগে না। সহজাতভাবে সমস্ত প্ল্যাটফর্মের জন্য একটি একক UI ডিজাইন করা বিভিন্ন চাক্ষুষ স্টাইলিং কারণে মেশিন থেকে মেশিনে স্থানান্তরিত হওয়ার সময় ঠিক দেখতে পাবে না। উদাহরণস্বরূপ, ম্যাক মেশিনে, স্প্লিট বারগুলি সাধারণত তুলনামূলকভাবে ঘন হয় এবং বোতামগুলি ছোট এবং আইকনগুলির সাথে বৃত্তাকার হয়। উইন্ডোজ মেশিনে, স্প্লিট বারগুলি সাধারণত সংকীর্ণ হয় এবং আরও স্কোয়ার ডিজাইনের বোতামগুলি আরও পাঠ্য হয়। আপনি প্রতিটি প্ল্যাটফর্মের জন্য একটি ইউআই লিখতে পারেন তার অর্থ এই নয় যে বেশিরভাগ অ্যাপ্লিকেশনগুলির জন্য আপনার উচিত।
  2. Qt কোনও সি ++ গ্রন্থাগার নয়। এটির জন্য একটি পৃথক সংকলন পদক্ষেপ প্রয়োজন, যা অন্যান্য অন্যান্য গ্রন্থাগারের তুলনায় বিল্ড প্রক্রিয়াটিকে আরও জটিল করে তোলে।
  3. (2) এর ফলস্বরূপ, সি ++ আইডিই এবং সরঞ্জামগুলি কিউটি এক্সপ্রেশনকে ত্রুটি হিসাবে পতাকাঙ্কিত করতে পারে কারণ তারা কিউটির স্পেসিফিকেশন বুঝতে পারে না। এটি প্রায়শই কিউটিক্রিটার বা একটি পাঠ্য শুধুমাত্র সম্পাদককে পছন্দ করতে বাধ্য করে vim
  4. কিউটি হ'ল এক বিশাল পরিমাণের উত্স, যা সংকলনের আগে আপনার ব্যবহার করা কোনও মেশিনে উপস্থিত থাকতে হবে এবং পূর্বেই ইনস্টল করা উচিত। এটি বিল্ড পরিবেশ স্থাপনের কাজটিকে আরও ক্লান্তিকর করতে পারে।
  5. এটি কেবলমাত্র এলজিপিএল এর অধীনে উপলব্ধ, এটি যখন সীমাবদ্ধ বা কম সীমাবদ্ধ লাইসেন্সের অধীনে যখন মুক্তি দিতে হয় তখন একক-বাইনারি-স্থাপনাকে ব্যবহার করা কঠিন করে তোলে।
  6. অনুরূপভাবে লিখিত "প্লেইন ওল 'নেটিভ অ্যাপ্লিকেশনগুলির সাথে তুলনা করা হলে (কে.ডি.এর জন্য লেখা অ্যাপ্লিকেশন ব্যতীত) এটি অত্যন্ত বৃহত সংকলিত বাইনারি তৈরি করে।

11
@ ডিহম্যানাইজার: এলজিপিএল লাইসেন্স আছে, এবং বাণিজ্যিক লাইসেন্স আছে। বাণিজ্যিক লাইসেন্স লাইসেন্সধারীর পক্ষ থেকে কয়েক হাজার ডলার, এবং পুনরায় বিতরণ ইত্যাদির অনুমতি দেয় না বিএসডি, এমআইটি, বা বুস্টের মতো উদার লাইসেন্সের অধীনে ওপেন সোর্স প্রকল্পগুলির জন্য যেখানে লেখকরা প্রচুর অর্থ উপার্জন করছেন না এবং তারা চান একটি লিবারেল লাইসেন্সের অধীনে তাদের কোডটি প্রকাশ করার জন্য, এলজিপিএল-এর উপর নির্ভরতা অযৌক্তিক, তবে প্রশ্নে বিকাশকারীরা সাধারণত বাণিজ্যিক লাইসেন্সিং বহন করতে পারে না।
বিলি ওনিল

27
# 6 এটি এড়ানোর সবচেয়ে বড় কারণ। আমি বলতে চাইছি, আমি কোনও বড়, আড়ম্বরপূর্ণ প্রোগ্রাম চাই না, এবং আমি নির্দিষ্ট লাইসেন্সে আবদ্ধ হতে পছন্দ করি না তবে এটি আমার পক্ষে একটি চুক্তি-ব্রেকার হিসাবে খুব ভাল, নেটিভ চেহারা এবং অনুভূতির অভাব। ওএসএক্স এবং উইন্ডোজের সাম্প্রতিক সংস্করণগুলি তাদের নেটিভ ইন্টারফেসগুলি সুন্দর, দ্রুত এবং কার্যকরীভাবে তৈরি করার জন্য দুর্দান্ত কাজ করেছে এবং তারা আমার জন্য ইতিমধ্যে যে সমস্ত কাজ করেছে তা আমি বরং লাভ করেছি; আমি দেখতে পেলাম যে দেশীয় চেহারা ছাড়াই অনেকগুলি প্রোগ্রাম আমার কাছে সস্তা এবং কৃপণ বোধ করে (সর্বদা নয়, তবে এটি আমাকে কিছুটা ছড়িয়ে দেয়)।
গ্রেগ জ্যাকসন

16
আপনার 6 নম্বরটি 1 নম্বর হওয়া উচিত This এটি Qt এর মধ্যে এখন পর্যন্ত বৃহত্তম সমস্যা। অনেক ক্ষেত্রে, এটি কেবল নেটিভ API গুলি ব্যবহার করে না। আমি আমার সফ্টওয়্যারটি দেশীয় দেখতে পছন্দ করি। ব্যবহারকারীরাও এটি পছন্দ করেন। আমি কখনই কিউটি দিয়ে তৈরি ম্যাক অ্যাপ্লিকেশনটি দেখিনি যা ম্যাক অ্যাপ্লিকেশনটির মতো দেখায়। দু'জনেরই কোনও ম্যাক ব্যবহারকারী নেই এবং তারা এই ধরণের জিনিসটিকে বেছে নেবে। আপনি যদি কেবল লিনাক্স অ্যাপ্লিকেশন তৈরি করতে এটি ব্যবহার করে থাকেন তবে এটি "ক্রস প্ল্যাটফর্ম" হওয়ার সমস্ত সুবিধা হারাবেন, এটি কেবলমাত্র দেশীয় দেখায় কারণ এটিতে স্থানীয় কিছু নেই।
কোডি ধূসর

41
'দেশীয়' চেহারা বাদে আর সমস্যা নেই। উইন্ডোজ অ্যাপ্লিকেশনগুলির পুরানো ধারাবাহিকতা এখন আপনার কাছে যা কিছু অনন্য ব্লব, গ্লোস এবং অ্যানিমেশন। অফিস বা উইন্ডোজ Control এর কন্ট্রোল প্যানেলটি একবার দেখুন, এমনকি আজকাল এমএসএসের ফ্ল্যাগশিপ পণ্যটি কীভাবে বেমানান জিআইআই রয়েছে। ম্যাক ব্যবহারকারীরা - ভাল, আপনার কাছে সেখানে খুব কার্যকর একটি পয়েন্ট রয়েছে।
gbjbaanb

5
@ ট্র্যাভারবয়ডস্মিথ: দুঃখিত, তবে আপনি ভুল করছেন। কিউটি হ'ল একমাত্র ফ্রেমওয়ার্ক যা প্রিপ্রোসেসিং ব্যবহার করে। সময়কাল। জিনোম, এফএলটিকে, ডাব্লুএক্স, এবং বন্ধুদের পরীক্ষা করুন এবং আমাকে একটি প্রাক-প্রসেসিং পদক্ষেপ দেখান। আপনি একটি পাবেন না। কিছু অন্যান্য গ্রন্থাগার বিভিন্ন বিল্ড সিস্টেমের সাথে আসে তবে দিনের শেষে, তারা সি ++ গ্রন্থাগার যা কোনও সি ++ সংকলক দ্বারা নির্মিত যেতে পারে। "কাঁচা win32 আমার কারণে উপস্থিত নেই" হিসাবে, এটি # 5 এবং # 6 হিসাবে আমার কারণে উপস্থিত রয়েছে।
বিলি ওনিল

115

লোকেরা যেমন বলে, প্রতিটি সরঞ্জাম প্রতিটি সমস্যা এবং পরিস্থিতির সাথে খাপ খায় ...

তবে আপনি যদি সি ++ প্রোগ্রামার হন তবে কিউটি আপনার কাঠামো। কোন প্রতিদ্বন্দ্বী।

আমরা একটি জটিল মেডিকেল ইমেজিং বাণিজ্যিক অ্যাপ্লিকেশন বিকাশ করি এবং কিউটি ধরে রাখে।

আমি এটি বলি না যে লোকেরা এটি সম্পর্কে যে 'কনস' বলছে তা মিথ্যা, তবে আমার অনুভূতি আছে যে তারা দীর্ঘদিন কিউটি চেষ্টা করেনি (এটি প্রতিটি নতুন সংস্করণে ধারাবাহিকভাবে উন্নতি করে ...) এবং বেশিরভাগ ক্ষেত্রে আপনি যদি যত্ন নেন তবে তারা যে সমস্ত বিষয় মন্তব্য করেছেন সেগুলির মধ্যে একটিও সমস্যা নয়।

ইউআই প্ল্যাটফর্মের অসঙ্গতি: কেবলমাত্র আপনি যদি কাস্টমাইজেশন বা কাস্টম আর্ট ছাড়াই 'ইউআই উইজেটগুলি যেমন হয় তেমন' ব্যবহার করেন।

কিউটি প্রিপ্রোসেসর ওভারলোড: কেবলমাত্র যদি আপনি সিগন্যাল-স্লট প্রক্রিয়া, বা কিউবজেক্ট উত্তরাধিকারের অপব্যবহার করেন, যখন সত্যিকারের প্রয়োজন নেই need

যাইহোক, আমরা এখনও সি # .NET এ অ্যাপ্লিকেশন লিখি, এবং এটি দীর্ঘকাল ধরে করছি। সুতরাং আমি আমার দৃষ্টিভঙ্গি enouch আছে বলে মনে করি।

আমি যেমন বলেছি, প্রতিটি পরিস্থিতির জন্য প্রতিটি সরঞ্জাম,

তবে কিউটি কোনও সন্দেহের সাথে একটি সামঞ্জস্যপূর্ণ এবং দরকারী কাঠামোযুক্ত।


9
+1 থাক! আমি ঠিক একই লিখতে চেয়েছিলাম। সর্বাধিক বাজে কথা হ'ল "নন ওপেন সোর্স / বাণিজ্যিক যুক্তি"। অবাক করার মতো বিষয়, ওপেন সোর্স শব্দটি অনেকে বোঝে। আমি এটি ব্যবহার করার পরে কিউটি ওপেন-সোর্স ছিল (1.4)। এবং এর সর্বাধিক ন্যায্য লাইসেন্স ছিল: Qt -> পে দিয়ে অর্থোপার্জন করুন।
ভ্যালেন্টিন হেইনিৎজ

16
ওহ এবং আমি 50 এমবি আর্ট এবং 200 টি আরও এমবি বিডিও টিউটোরিয়াল এবং ডেটা যুক্ত অ্যাপ্লিকেশনটিতে 10 এমবি ডিএলএল যুক্ত করার বিষয়ে সত্যই যত্নশীল নই :)
33 Петров

9
কিউটিটির জন্য প্রয়োজনীয় স্থানটি এই দিনগুলিতে সস্তা।
trusktr

5
এটি কিউটি-র সাথে আমার অভিজ্ঞতার সাথে মেলে (উইজেটস কাঠামো, আমি এখন পর্যন্ত গুরুতর কোনও কিউএমএল / কিউটি কিউইক ব্যবহার করি নি)। জটিল ইউআই প্রয়োজনীয়তা সহ বৃহত্তর অ্যাপ্লিকেশনগুলি লেখার পক্ষে এটি উপযুক্ত। একবার আপনি এটি শিখলে, আপনি খুব উত্পাদনশীল হতে পারেন। উল্লিখিত কনস (বিল্ড সিস্টেমটি সঠিকভাবে সেট আপ করা থাকলে মুকিংয়ের জন্য পৃথক সংকলন পদক্ষেপ, ইউআই ফাইল, ইত্যাদি) কোনও সমস্যা নয়। আমি Qmake বা cmake হয় সুপারিশ করতে পারেন।
নীল

কিউটি 5.8 থেকে পরবর্তী সময়ে কিউটি লাইট নামে একটি প্রকল্প রয়েছে যা আপনার নির্দিষ্ট প্রয়োজনের জন্য চূড়ান্ত কিউটিকে হ্রাস করে। এটি একটি বাণিজ্যিক বৈশিষ্ট্য;)
এসএমমোসাভি

36

কিউটি সম্পর্কে আমি যে সমস্ত জিনিস পছন্দ করি না তার মধ্যে, এটি টেমপ্লেটগুলির সাথে ভাল খেলেনি তা আমাকে সবচেয়ে বেশি বাগ দেয়। আপনি এটি করতে পারবেন না:

template < typename T >
struct templated_widget : QWidget
{
  Q_OBJECT;

public signals:
  void something_happened(T);
};

এটি প্রিপ্রেসেসরের সাথেও ভাল খেলছে না। আপনি এটি করতে পারবেন না:

#define CREATE_WIDGET(name,type) \
struct name ## _widget : QWidget \
{ \
  Q_OBJECT; \
\
public signals: \
  void something_happened(type); \
}

এটি, এই সংশ্লেষের সাথে মিশ্রিত হয়েছে যে সিগন্যালের প্রতিক্রিয়াযুক্ত সমস্ত কিছুর একটি Q_OBJECT হতে হবে, Qt কে সি ++ প্রোগ্রামার হিসাবে কাজ করতে শক্ত করে তোলে। জাভা বা পাইথন স্টাইলের প্রোগ্রামিংয়ের লোকেরা সম্ভবত বাস্তবে আরও ভাল।

আমি টাইপ সুরক্ষা ফিরে পেতে এবং যে কোনও ফান্টারের সাথে একটি কিউটি সিগন্যাল সংযুক্ত করার উপায় অনুসন্ধান এবং প্রচুর পরিমাণে ব্যয় করেছি: http://crazyeddiecpp.blogspot.com/2011/01/quest-for-sane-signals ইন-Qt-ধাপে 1.html

আমি যে ধরণের জিনিসটি করতে চাই তা হ'ল কিউটি এমওসি দ্বারা অসম্ভবের পাশে তৈরি প্রতিদিনের সি ++ বিকাশ ... যা এখনকার দিনে আসলেই অহেতুক is

সত্যি বলতে গেলে, আমি এটির সাথে আটকে আছি কারণ আপনি যদি স্বয়ংক্রিয় ইউআই টেস্টিং করতে চান তবে এমএফসি-র ছোট্ট শহরে কিউটি হ'ল একমাত্র খেলা ... এটি ১৯৮০ (এটি সত্যই শক্তভাবে কাজ করা সফল হয়)। কেউ কেউ ডাব্লুএক্স বলতে পারে তবে এটি আরও গুরুতর সমস্যা পেয়েছে। GTKmm আমার প্রথম পছন্দ হতে পারে তবে এটি সমস্ত মালিক আঁকা এবং অ্যাক্সেসযোগ্যতা না করে ... শিল্পের মান পরীক্ষামূলক সফ্টওয়্যার দ্বারা চালিত হতে পারে না। Qt এই ক্ষেত্রে যথেষ্ট কঠিন ( আপনি অ্যাক্সেসিবিলিটি প্লাগইনটি পরিবর্তন করার পরে সবেমাত্র কাজ করে)।


1
আগ্রহের বাইরে, আপনি ডাব্লুএক্সের প্রধান সমস্যা হিসাবে দেখছেন?
টম অ্যান্ডারসন

7
@ টম - বিশেষত নতুন জিনিসগুলির জন্য দরিদ্র ডকুমেন্টেশন। এআইআই উপাদানগুলি নিখরচায় নথিভুক্ত করা হয়েছে বড় অংশগুলি নিখোঁজ হওয়ার কারণে, উত্পাদন পরিবেশে এটি ব্যবহার করা কঠিন হয়ে পড়ে। ইভেন্ট প্রক্রিয়াটির জন্য ডকুমেন্টেশনটি অন্তত উইন 32 এ অনুসরণ করা পথের বিষয়ে মৌলিকভাবে ত্রুটিতে রয়েছে। কম্পিউটারে চিৎকার করে অনেক সময় ব্যয় করেছেন, "এটি কাজ করা উচিত !!!" গভীর প্রক্রিয়াকরণ কোডে নেমে যাওয়ার আগে ডাব্লুএক্স ডক্সগুলি অনুসরণ করে না এবং আমি কী করছিলাম তা কখনই কাজ করবে না তা জানতে।
এডওয়ার্ড স্ট্রেঞ্জ

1
প্রপার্টি গ্রিড গ্রন্থাগারকে মূল লাইনে গ্রহণ করার কারণে আমিও বিরক্ত হয়েছিলাম। আমি সেই লাইব্রেরিটি ব্যবহার করেছি এবং এটি প্রোগ্রামারের পক্ষে জ্ঞানের প্রকৃত অভাব ছাড়াও অসংখ্য, মৌলিক নকশার ত্রুটিগুলি দেখিয়েছিল (উদাহরণস্বরূপ কনস্ট্রাক্টরগুলিতে ভার্চুয়াল ফাংশন বলে)। এটি এবং এটিআইয়ের দরিদ্র রাষ্ট্রটি দরিদ্র মানের দিকে প্রবণতা দেখিয়েছে। আমি স্থির ইভেন্ট টেবিলগুলির একটি বড় অনুরাগীও নই, যদিও ইভেন্টগুলির প্রতিক্রিয়া জানাতে কমপক্ষে আরও একটি উপায় রয়েছে ... এমএফসি থেকে পৃথক, যা ডাব্লুএক্স আরও যাইহোক উত্সাহী হওয়ার মতো।
এডওয়ার্ড স্ট্রেঞ্জ

ধন্যবাদ। আমি এটি কেবল কিছুটা ব্যবহার করেছি এবং ডাব্লুএক্সপিথন এপিআইয়ের মাধ্যমে, যেখানে এটি বেশ সুন্দর মনে হয়েছিল। আমি প্রশংসা করতে পারি যে এটি কিছু মন্দকে আড়াল করবে, তবে আরও গুরুতর সমস্যার বিরুদ্ধে আসতে আমি এতটা গভীরভাবে জড়িত হতে পারি নি। আমার সচেতন হওয়ার জন্য কিছু।
টম অ্যান্ডারসন

1
সিগন্যালের প্রতিক্রিয়াযুক্ত প্রতিটি কিউ_ওবিজেইসিটি হতে হবে, আজকাল নয় ... এখন, স্ট্যাটিক ফাংশন, ফাংশন এবং ল্যাম্বদা ফাংশন একটি সংকেতকে প্রতিক্রিয়া জানাতে পারে (আপনি স্লট হিসাবে ফাংশন পয়েন্টার ব্যবহার করতে পারেন)। কোনও-কিউবজেক্ট ক্লাসে সদস্য স্লট থাকতে পারে যদি আপনি তাদের সাথে std :: bind ব্যবহার করে সংখ্যার সদস্যকে একটি ফাংশন পয়েন্টারে রূপান্তর করতে সংযুক্ত করেন।
ভিনিসিয়াস এ। জর্জি

28

কিউটি না ব্যবহারের একটি কারণ হ'ল আপনি যদি কেবলমাত্র একটি স্থাপত্যের জন্য যেমন উইন্ডোজের জন্য লিখেন তবে আপনি সি # /। নেট (বা ম্যাকের উপর কোকো) ব্যবহার করতে পারেন কারণ তারা সর্বদা সর্বশেষতম ঘণ্টা-এবং সুবিধা নিতে সক্ষম হবে ওএসের শিস

আপনি যদি ক্রস-প্ল্যাটফর্ম অ্যাপ্লিকেশন লিখছেন তবে জাভা (যেমন আপনি একটি "জাভা শপে" কাজ করেন) এর মতো অন্য প্রযুক্তিতে আপনি ইতিমধ্যে ভারী ন্যস্ত হতে পারেন। আপনার প্রযুক্তির পছন্দটি আপনার ইকোসিস্টেম দ্বারা নির্ধারিত হতে পারে যেখানে আপনি বিকাশ করছেন, যেমন ভাষা-নির্দিষ্ট APIs। এই ধরণের ক্ষেত্রে, প্রযুক্তির সংখ্যা হ্রাস করা উপকারী হতে পারে।

তৃতীয় কারণ যা আমি ভাবতে পারি তা হ'ল কিউটিটি সি ++ এর আশেপাশের, এবং সি ++ প্রোগ্রামের তুলনামূলকভাবে কঠিন / বিপজ্জনক ভাষা I আমি মনে করি এটি পেশাদারদের একটি ভাষা। আপনার যদি শীর্ষে পারফরম্যান্স প্রয়োজন হয় এবং নিখুঁত হতে সক্ষম হন তবে সি ++ সম্ভবত এখনও শহরের সেরা খেলা। প্রকৃতপক্ষে, কিউটি মেমরি পরিচালনার অনেকগুলি সমস্যার সমাধান করে যদি আপনি সুযোগকে বাইরে রাখার জন্য কিছু সেট করেন। এছাড়াও, কিউটি নিজেই অনেকগুলি বাজে সি ++ ইস্যু থেকে ব্যবহারকারীকে অন্তরক করতে একটি ভাল কাজ করে। প্রতিটি ভাষা এবং কাঠামোর তার উপকারিতা এবং বিপরীতে রয়েছে। এটি একটি খুব জটিল সমস্যা, যা প্রায়শই ডিনারে দেখা যায়: সাধারণত গতি, গুণমান এবং দাম (তবে আপনি কেবল দুটি বেছে নিতে পারেন) সংক্ষিপ্তসার হতে পারে।

যদিও বিধিগুলি বলছে যে আমি প্রশ্নের উত্তর দেওয়ার জন্য আমার মনোনিবেশ করা উচিত, আমি বিলি ওনিলের উত্থাপিত কিছু বিষয়কে প্রত্যাখ্যান করতে চাই, যিনি আমার ধারণা Qt ব্যবহার না করার জন্য সাধারণভাবে উদ্ধৃত কারণগুলির সংক্ষিপ্ত বিবরণে একটি ভাল কাজ করেছে:

  1. কিউটিটি আসলে একটি সি ++ গ্রন্থাগার / ফ্রেমওয়ার্ক / শিরোনাম ফাইল। এটি বৃদ্ধি করা হয়একটি ম্যাক্রো প্রসেসরের দ্বারা (এমওসি) যা সিগন্যাল এবং স্লটকে সক্ষম করে, আরও অনেক কিছুই। এটি অতিরিক্ত ম্যাক্রো কমান্ডগুলিকে রূপান্তর করে (যেমন কিউ_ওজেজেইসিটি) যাতে ক্লাসগুলির অন্তর্নির্ধারণ এবং অন্যান্য ধরণের অন্যান্য গুডি থাকে যা আপনি সি ++ তে অবজেক্টিভ-সি কার্যকারিতা যুক্ত করার কথা ভাবেন। আপনি যদি এই বিশুদ্ধতার অভাব দ্বারা ক্ষুব্ধ হয়ে C ++ সম্পর্কে যথেষ্ট পরিমাণে জানেন তবে আপনি 1 জন হন তবে 1) Q_OBJECT এবং এর জাতীয় বা 2 টি ব্যবহার করবেন না) এটি করায় কৃতজ্ঞ হোন এবং খুব সীমিত কোণার কেসকে ঘিরে প্রোগ্রাম করুন যেখানে এটি একটি সমস্যা সৃষ্টি করে। "সংকেত এবং স্লটগুলির জন্য বুস্টটি ব্যবহার করুন" বলে এমন লোকদের জন্য! তারপরে আমি প্রতিবেদন করব যে আপনি একজনের জন্য অন্য "সমস্যার" বিনিময় করছেন। বুস্টটি বিশাল, এবং এর নিজস্ব সাধারণ-উদ্ধৃত ইস্যু যেমন দরিদ্র ডকুমেন্টেশন, ভয়াবহ এপিআই এবং ক্রস-প্ল্যাটফর্ম হররেন্স (জিসিসি 3 এর মতো পুরানো সংকলকগুলি ভাবেন) has

  2. সম্পাদক সহায়তার জন্য, এটি 1 থেকেও অনুসরণ করা হয়েছে, আমি কিছুটা সম্মত। প্রকৃতপক্ষে, কিউটি ক্রিয়েটর হ'ল আইএমএইচও সেরা গ্রাফিকাল সি ++ এডিটর, পিরিয়ড, আপনি কিউটি স্টাফ ব্যবহার না করলেও। অনেক পেশাদার প্রোগ্রামার ইমাক এবং ভিএম ব্যবহার করে। এছাড়াও, আমি মনে করি Eclipse অতিরিক্ত সিনট্যাক্স পরিচালনা করে। সুতরাং, কিউটি ম্যাক্রো (Q_OBJECT) বা সিগন্যাল / স্লট সংযোজনে কোনও সমস্যা নেই। আপনি ভিজ্যুয়াল স্টুডিওতে সম্ভবত এই ম্যাক্রোগুলি খুঁজে পাবেন না, কারণ (আমি স্বীকার করি) এগুলি সি ++ এর সংযোজন। তবে বড় আকারে, সি # /। নেট নেট লোকেরা যে কোনও উপায়ে কিউটিটি ব্যবহার করবে না, কারণ তাদের নিজস্ব মালিকানা কৌশলগুলি দিয়ে তাদের কার্যকারিতা প্রচুর পরিমাণে .াকা পড়েছে।

  3. কিউটি উত্সের আকার হিসাবে, এতক্ষণ এটি রাতারাতি সংকলন করে, কে যত্ন করে? আমি আমার দ্বৈত কোর ম্যাকবুকটিতে "রাতারাতির চেয়ে কম" তে কিউটি 4 সংকলন করেছি। আমি অবশ্যই আশা করি কোনও নির্দিষ্ট প্রযুক্তি ব্যবহার বা ব্যবহার না করার সিদ্ধান্তটি এটিই নয়। যদি এটি সত্যই সমস্যা হয় তবে আপনি Qt ওয়েবসাইট থেকে ম্যাক, লিনাক্স এবং উইন্ডোজের জন্য পূর্বনির্ধারিত এসডিকে ডাউনলোড করতে পারেন।

  4. লাইসেন্সিং তিনটি পছন্দের ক্ষেত্রে পাওয়া যায়: ১) আপনি কিউটি আইটিএসএলএফ সংশোধন করতে এবং ভাগ না করার ক্ষেত্রে স্বত্বাধিকারী লাইসেন্স , বা কেউ কিউটি ব্যবহার করছেন এবং অ্যাট্রিবিউশন দিতে ইচ্ছুক নয় তা লুকিয়ে রাখতে চান (ব্র্যান্ডিং এবং চিত্রের জন্য খুব গুরুত্বপূর্ণ হতে পারে!) 2 ) জিপিএল এবং ৩) এলজিপিএল। হ্যাঁ, স্ট্যাটিক লিঙ্কিংয়ের সাথে সমস্যাগুলি রয়েছে (সমস্ত কিউটিটি বাইনারিতে ঘূর্ণায়মান) - তবে আমি মনে করি এটি আরও বেশি কারণ কেউ ভিতরে peুকে যায় না এবং খেয়াল করতে পারেন যে আপনি কিউটি (অ্যাট্রিবিউশন!) ব্যবহার করছেন। আমি ডিজিয়ার কাছ থেকে মালিকানাধীন লাইসেন্স কেনার চেষ্টা করেছি এবং তারা আমাকে বলেছিল "আপনি যা করছেন তার জন্য আপনার সত্যিকার প্রয়োজন নেই।" কি দারুন. যে ব্যবসায় থেকে লাইসেন্স বিক্রির ব্যবসায় রয়েছে From

  5. বাইনারি / বান্ডিলের আকার হ'ল কারণ আপনার কাছে Qt স্টাফগুলি এমন লোকদের মধ্যে বিতরণ করতে হবে যাদের কাছে এটি নেই: উইন্ডোজ ইতিমধ্যে আছে? ভিজ্যুয়াল স্টুডিও স্টাফ বা আপনাকে রান-টাইম ইনস্টল করতে হবে। ম্যাক ইতিমধ্যে প্রচুর কোকো নিয়ে এসেছে এবং এটি গতিশীলভাবে সংযুক্ত হতে পারে। যদিও আমি প্রচুর বিতরণ না করি, আমি কখনই ~ 50 মেগাবাইট স্ট্যাটিক ফাইল (যা ইউপিএক্সের মতো কিছু বাইনারি স্ট্রিপার / সংক্ষেপণ ইউটিলিটিগুলির সাথে আরও ছোট করে তুলতে পারি) বিতরণ করার ক্ষেত্রে খুব বেশি সমস্যা পাইনি। আমি এটি করার জন্য যথেষ্ট যত্ন নিচ্ছি না, তবে ব্যান্ডউইথ যদি কখনও সমস্যা হয় তবে আমি আমার বিল্ড স্ক্রিপ্টে একটি ইউপিএক্স পদক্ষেপ যুক্ত করব।

  6. "নেটিভ লুক এবং অনুভূতি" কী সংজ্ঞা দেয়? আমি মনে করি "বেশিরভাগ" সম্মত হবে যে ম্যাক একীভূত চেহারা এবং বোধের নিকটে আসে। তবে আমি এখানে বসে সাফারি, আইটিউনস, অ্যাপারচার, ফাইনাল কাট প্রো, পৃষ্ঠাগুলি ইত্যাদির দিকে তাকিয়ে আছি এবং ওএস বিক্রেতার দ্বারা তৈরি হওয়া সত্ত্বেও এগুলি কিছুই দেখতে একরকম লাগে না। আমি মনে করি "অনুভূতি" দিকটি আরও প্রাসঙ্গিক: উইজেট স্টাইলিং, প্রতিক্রিয়াশীলতা ইত্যাদি etc. আপনি যদি প্রতিক্রিয়াশীলতার বিষয়ে যত্নশীল হন তবে জাভা বা অন্য কোনও উচ্চ গতিশীল ভাষার পরিবর্তে সি ++ ব্যবহার করার জন্য এখানে ভাল কারণ। (উদ্দেশ্য সিও দোলা দেয় তবে আমি কিউটি সম্পর্কে পৌরাণিক কাহিনীগুলি দূর করার চেষ্টা করছি)

সংক্ষেপে, এটি একটি জটিল সমস্যা। তবে আমি এটি উল্লেখ করতে চাই যে আমি "কিউটি ব্যবহার না করার" কম কারণ রয়েছে বলে মনে করি যেহেতু কেউ পৌরাণিক কাহিনী এবং দশকের পুরানো তথ্যের ভিত্তিতে ভাবেন।


1
আমি যা পাই না তা হ'ল কেন এই ক্রস প্ল্যাটফর্ম লাইব্রেরিগুলি কেবল মোড়কের কার্যকারিতা নয়, এমনকি আরও ভাল; যদি কোকো, উইন 32, কেডিএ / জিনোম ফাংশনগুলির চারপাশে ডিফস থাকে তবে এর সমস্ত বৈশিষ্ট্য সহ সর্বাধিক সন্ধানী ইউআই নিশ্চিত করে।
মার্কাসজে

2
@ মার্কাসজে একটি টুলকিটের চারপাশে মোড়ক লেখার বিষয়টি স্পষ্টতই তুচ্ছ নয়, 4 বা ততোধিক কিছু মনে করবেন না - তবে আপনি যদি মনে করেন যে এটি এত সহজ, আপনি চেষ্টা করার জন্য স্বাগত জানাই। ধারণা করা যায় যে এটি কেবল শর্তযুক্ত প্রাকপ্রসেসিং ব্যবহার করেই অর্জন করা যেতে পারে ... আপনার অবশ্যই মজা করা উচিত, তাই না?
আন্ডারস্কোর_ডি

@ মার্কাসজে লিবুই হুবহু এটি (যদিও কেডিএ সমর্থন ছাড়াই)।
ডেমি

আমি যুক্ত করতে চাই যে আপনি এখন। নেট সাথে কিউটি / কিউএমএল ব্যবহার করতে পারেন। আপনার সি ++ স্পর্শ করার দরকার নেই। github.com/qmlnet/qmlnet PS: আমি লেখক।
পল নফফ

26

এটির কিছু লাইসেন্সিং। লাইসেন্সিং ইতিহাসের কয়েকটি জন্য https://en.wikedia.org/wiki/Qt_(software)# লাইসেন্সিং দেখুন । 2000 অবধি, খোলা উত্স সম্পর্কে দৃ strongly়ভাবে যত্নশীল লোকেরা Qt ব্যবহার করেনি। সময়কাল। (এটি আসলে জিনোমের বিকাশের মূল প্রেরণা ছিল।) ২০০৫ অবধি উইন্ডোজের জন্য ফ্রি সফটওয়্যার প্রকাশ করতে সক্ষম হওয়া লোকেরা কিউটি ব্যবহার করেনি। এমনকি সেই তারিখের পরেও যারা জিপিএল ব্যতীত অন্য কোনও কিছুর অধীনে বিনামূল্যে সফ্টওয়্যার চেয়েছিলেন তাদের কাছে Qt ব্যবহারের বিকল্পটি ছিল না। সুতরাং যে কোনও ফ্রি সফ্টওয়্যার প্রকল্প those তারিখের চেয়ে পুরানো, Qt ব্যবহার করতে পারেনি। এবং অবশ্যই, মালিকানা কোড লেখার লোকদের সেই সুযোগসুবিধায় মূল্য দিতে হয়েছিল।

তদুপরি এটি অন্য বিকল্পের ঘাটতি আছে বলে মনে হয় না। উদাহরণস্বরূপ WxWidgets , জিটিকে + এবং টাকা সব ওপেন সোর্স, ক্রস-প্ল্যাটফর্ম টুলকিট হয়।

এছাড়াও দীর্ঘকাল উইন্ডোজ ডেস্কটপে এতটাই প্রভাবশালী ছিল যে প্রচুর সফ্টওয়্যার কেবল উইন্ডোতে চালিত হতে পারে content আপনি যদি মাইক্রোসফ্ট টুলচেনটি ইনস্টল করেন তবে মাইক্রোসফ্টের মালিকানাধীন জিনিসগুলি অন্য যে কোনও বিষয় নিয়ে চিন্তা করার চেয়ে সহজ ব্যবহার করা সহজ, এবং অনেক প্রোগ্রামার কেবল এটিই করেছিলেন।


1
@ ব্যাটলি: জিটিকে + হ'ল ক্রস প্ল্যাটফর্ম। উদাহরণস্বরূপ, পিডগিন আইএম ক্লায়েন্টটি জিটিকে + তে লেখা আছে।
বিলি ওনিল

1
ঠিক আছে তবে উইন্ডোজটিতে 'কোনওভাবে' চালানো সম্ভব :) :)
দেহুমানাইজার

6
উইন্ডোজে জিম্প ইনস্টল করুন এবং একবার দেখুন।
ব্যবহারকারী 281377

2
হ্যাঁ, এবং জিআইএমপি উইন্ডোজে ভাল কাজ করে তবে এটি উইন্ডোজ 7 ইউআই চেহারা এবং বোধের সাথে খাপ খায় না।
অ্যালান বি

5
পিডগিন সম্ভবত উইন্ডোজে জিটিকের আরও ভাল উদাহরণ example এটি অভিনব কিছু করে না, তবে এটি ফিট করে এবং সম্ভবত এটি 10 ​​বছর বা তারও বেশি সময় ধরে?
ব্রেন্ডন লং

14

আমি উপরে আলোচিত প্রায় সকল কারণের সাথে একমত আছি তবে এখানকার অনেক লোক বলেছে যে অতিরিক্ত ওভারহেড যে এটি নিয়ে আসে সে কারণে তারা Qt ব্যবহার করবে না। আমি এর সাথে একমত নই কারণ আজকের দিনে খুব প্রচলিত ভাষাগুলি (জাভা, সি # এবং পাইথন) নিজেরাই বেশ কিছুটা ওভারহেড বহন করে।

দ্বিতীয়ত, কিউটি সি ++ দিয়ে প্রোগ্রামিংকে এত সহজ এবং সোজা-ফরোয়ার্ড করে তোলে যা এটি ব্যবহার করে যে অতিরিক্ত সংস্থান ব্যবহার করে। স্বাচ্ছন্দ্যে যে লেখা যেতে পারে তার কারণে আমি স্ট্যান্ডার্ড সি ++ এর চেয়ে কিউটিতে লেখা বেশ কয়েকটি কনসোল অ্যাপ্লিকেশন পেয়েছি।

আমি বলব যে Qt এর উত্পাদনশীলতা সি / সি ++ এর চেয়ে বেশি তবে পাইথনের মতো ভাষার চেয়ে কম।


2
আমি অনুমান করি যে এগুলি সমস্ত ব্যক্তির অভিজ্ঞতার সাথে সম্পর্কিত, কারণ আমি সি ++ 14 এ ঠিক আছে কোড করতে পারি, তবে প্রতিবার কিছু কিউটি কোড দেখলে এটিকে একই ভাষা হিসাবে স্বীকৃতি দেওয়ার জন্য আমাকে কঠোরভাবে পড়তে হবে ... সুতরাং আমি অবশ্যই ডোন না আপনি এখানে বোঝাচ্ছেন না এটি সর্বসম্মত উত্পাদনশীলতা বুস্টার মনে হয়।
আন্ডারস্কোর_ডি

1
@ মাউন্ডস__ স্পষ্টতই যদি আপনি সি ++ খুব ভাল জানেন এবং আপনি Qt না করেন তবে আপনি পরবর্তীটির সাথে আরও উত্পাদনশীল হতে পারবেন না। তবে আপনি যখন সি ++ এবং কিউটি উভয়ই জানতে পারবেন, তখন কাঠামোটি বাস্তবায়িত করার জন্য অনেক কিছুই সহজ এবং দ্রুততর করে তুলছে (সি ++ 11, 14 ইত্যাদি ফাঁক পূরণ করছে, তবে এখনও পুরোপুরি নয়)।
ymoreau

11

এটি সত্যই কোনও শিখা যুদ্ধ শুরু করার চেষ্টা নয়, আমি কেবল কয়েকটি পয়েন্টটি সম্বোধন করতে চেয়েছিলাম।

সম্ভবত কিউটি বেশি ব্যবহৃত হয় না এর আসল কারণটি হ'ল এটি সি ++ এবং কম লোক ডেস্কটপ অ্যাপ্লিকেশনগুলির জন্য সি ++ ব্যবহার করে।

Qt কোনও সি ++ গ্রন্থাগার নয়। এটির জন্য একটি পৃথক সংকলন পদক্ষেপ প্রয়োজন, যা অন্যান্য অন্যান্য গ্রন্থাগারের তুলনায় বিল্ড প্রক্রিয়াটিকে আরও জটিল করে তোলে।

ভিজ্যুয়াল স্টুডিওর জন্য বনাম-অ্যাডিন কুইটের নিজস্ব কমান্ডলাইন প্রক্রিয়া তৈরি করার মতো এটি স্বয়ংক্রিয়ভাবে করে। এমএফসিটির জন্য সংলাপগুলি তৈরি করতে ব্যবহৃত সংস্থান সংকলকটিও একটি পৃথক পদক্ষেপ তবে এটি এখনও সি ++।

কিউটি হ'ল এক বিশাল পরিমাণের উত্স, যা সংকলনের আগে আপনার ব্যবহার করা কোনও মেশিনে উপস্থিত থাকতে হবে এবং পূর্বেই ইনস্টল করা উচিত। এটি বিল্ড পরিবেশ স্থাপনের কাজটিকে আরও ক্লান্তিকর করতে পারে।

ভিজ্যুয়াল স্টুডিওর প্রতিটি সংস্করণের জন্য বাইনারি ডাউনলোড রয়েছে এবং উত্স থেকে উত্পন্ন করা একটি একক আদেশ। আমি দেখতে পাচ্ছি না এসডিকে উত্সের আকারটি আজকাল এতগুলি ডিলের। ভিজ্যুয়াল স্টুডিও আপনাকে চয়ন বাছাই করার পরিবর্তে এখন সমস্ত সি ++ লিব ইনস্টল করে, ফলস্বরূপ সংকলকটির ইনস্টল আকার> 1 জিবি হয়।

এটি কেবলমাত্র এলজিপিএল এর অধীনে উপলব্ধ, এটি যখন সীমাবদ্ধ বা কম সীমাবদ্ধ লাইসেন্সের অধীনে যখন মুক্তি দিতে হয় তখন একক-বাইনারি-স্থাপনাকে ব্যবহার করা কঠিন করে তোলে।

এলজিপিএল কেবল লিব প্রয়োগ করে, এটি আপনার কোডকে প্রভাবিত করে না। হ্যাঁ এর অর্থ এই যে আপনাকে একক বাইনারি (আপনি অর্থ প্রদান না করে) এর পরিবর্তে ডিএলএল চালনা করতে হবে, তবে এমন একটি পৃথিবীতে যেখানে আপনাকে জাভা রানটাইম বা একটি ছোট ব্যবহারের জন্য নেট আপডেট আপডেট করতে হবে এটি এত বড় ব্যাপার নয়। প্ল্যাটফর্মগুলিতে এটি একটি একক এবিআইয়ের সাথে সমস্যাও কম হয় যাতে অন্যান্য কিউটি অ্যাপ্লিকেশনগুলি libs ভাগ করে নিতে পারে।

কিছু ক্ষেত্রে, এটি কেবল নেটিভ প্রোগ্রামগুলির মতো লাগে না। সহজাতভাবে সমস্ত প্ল্যাটফর্মের জন্য একটি একক UI ডিজাইন করা বিভিন্ন চাক্ষুষ স্টাইলিং কারণে মেশিন থেকে মেশিনে স্থানান্তরিত হওয়ার সময় ঠিক দেখতে পাবে না।

এটি নেটিভ উইজেট এবং থিমগুলি ব্যবহার করার কথা। আমি অবশ্যই বেশিরভাগ প্রযুক্তিগত অ্যাপ্লিকেশনগুলি করব যাতে আমার ব্যবহারকারীরা স্টাইল সম্পর্কে খুব বেশি চিন্তিত না হন। বিশেষত উইন্ডোজগুলিতে স্মার্টফোন উইজেট হিসাবে নিজের মতো করে স্টাইল করার জন্য নতুন ফ্যাশনের অর্থ যে কোনওভাবেই কোনও মান কম এবং কম।


1
বেশ কয়েকটি বড় সফ্টওয়্যার সংস্থাগুলি সি ++ তে বাণিজ্যিক অ্যাপ্লিকেশন তৈরি করে তবে আমি কিউটি ব্যবহার করে এমন অনেকের সম্পর্কে অবগত নই। সুতরাং, আমি যখন বুঝতে পেরেছি যে নন-সি ++ বিকাশকারীরা কিউটি এড়াতে পারে, আপনি যখন সি ++ অ্যাপ্লিকেশন লিখছেন তখনও কিউটি এড়ানোর অন্যান্য কারণ রয়েছে, মনে হয়। বাস্তবে, এমন কোনও ক্রস প্ল্যাটফর্মের ভাষা এবং জিইউআই সরঞ্জামকিট নেই যা আমি দোষ খুঁজে পাচ্ছি না। দেখে মনে হচ্ছে ক্রস-প্ল্যাটফর্মের বিকাশ কেবল প্লেইন হার্ড, এবং এটি ভাল করা কখনই সহজ বা নিখরচায়িত নয় এবং QT যে প্রতিশ্রুতি দেয় (আপনার জিইউআই একবার লিখুন এবং জিইআইআইকে যে কোনও জায়গায় আবার ব্যবহার করুন) যথেষ্ট নয়।
ওয়ারেন পি

বেশিরভাগ ডেস্কটপ সি ++ সফ্টওয়্যার হয় এমএফসি-তে থাকে কারণ এটি 20 বছর আগে শুরু হয়েছিল বা এমএফসি এড়াতে 20 বছর আগে শুরু করা অভ্যন্তরীণ সরঞ্জামদণ্ড ব্যবহার করে (যেমন এমএস-অফিস বা অটোক্যাড)। আমার সন্দেহ হয় ডাব্লুপিএফ এর সাথে সি ++ / সিএলআর তে খুব লেখা হচ্ছে। তবে ক্রস-প্ল্যাটফর্ম বিবেচনা ছাড়াই আমি কিউটি সেরা (বা সবচেয়ে কম খারাপ!) ডেস্কটপ টুলকিটটি পাই। বেশিরভাগ লোকের মতো আমরা একটি ওয়েববিফ্রন্টের শেষ প্রান্তের দিকে (সম্ভবত QtQuick / QML এ) এবং একটি সি ++ সার্ভার ব্যাকএন্ডের দিকে এগিয়ে যাচ্ছি - যা সম্ভবত কিউটি সংকেত / স্লট ব্যবহার করবে তবে কোনও গুই নেই
মার্টিন বেকেট

আমি রাজী. সবচেয়ে খারাপ। এমনকি উইন্ডোজ-শুধুমাত্র অ্যাপ্লিকেশনগুলিতে আমি এমএফসি সমস্যাগুলির তুলনায় কিউটি সমস্যাগুলি ডিবাগ করব।
ওয়ারেন পি

@ ওয়ারেনপ - হ্যাঁ আমি এমএফসি থেকে নিখোঁজ সমস্ত স্টাফের জন্য কোডপোজেক্ট অনুসন্ধান করতে মিস করি না। তবে এমএসএফটি-র দেশীয় কোডের নতুন পাওয়া ভালবাসার সাথে - তারা কোনও গিও লেখাকে আরও সহজ করার জন্য খুব বেশি কিছু করেনি।
মার্টিন বেকেট

7

কারণটি সহজ: এর মূলধারার সমস্ত ভাষার সাথে এটির ভাল আবদ্ধতা নেই এবং হাতের কাজের জন্য এটি জাদুকরভাবে সর্বদা উপযুক্ত নয় ।

কাজের জন্য সঠিক টুল ব্যবহার করুন। যদি আমি একটি সাধারণ কমান্ড-লাইন অ্যাপ্লিকেশন লিখছি, তবে কেন আমি কেবল এটির প্রয়োজনে কিউটি দিয়ে এটি ফুটিয়ে দেব?

আরও সাধারণ উত্তর হিসাবে (যা আমি দিতে পারি কারণ আমি এখানে প্রাসঙ্গিক), কিছু প্রোগ্রামার কেবল এটিকে যেতে দেয়নি এবং এটি ব্যবহার করার সিদ্ধান্ত নিয়েছে। কিছু ক্ষেত্রে প্রোগ্রামার ব্যতীত অন্য কোনও নির্দিষ্ট কারণ নেই যার জন্য এটির প্রয়োজন কখনও খুঁজে পাওয়া যায় নি।


1
তবে কিউটি কেবল কনসোল অ্যাপ্লিকেশন লেখার ক্ষমতা সরবরাহ করে। তাই না?
দেহুমানাইজার

9
@ ডিহম্যানাইজার: আমার কোনও ধারণা নেই। তবে কেন আমি এটি একটি ছোট ইউটিলিটি সরঞ্জামের জন্য ব্যবহার করব? যখন আমি তুচ্ছভাবে মাত্র স্ট্যান্ডার্ড সি ++ তে অ্যাপ্লিকেশনটি লিখতে পারি তখন তাতে আমার কী লাভ হবে? দেখে মনে হচ্ছে আপনি একটি লাইব্রেরি ব্যবহারের কারণ অনুসন্ধান করছেন যা প্রোগ্রামের পিছনের দিক।
অরবিট

12
@ ডিহম্যানাইজার: যেমনটি আমি বলেছিলাম, এটি পিছনের দিকে approach আপনি যখন কোনও লাইব্রেরির প্রয়োজন খুঁজে পান, তখন আপনি জানতে পারবেন এবং তারপরে আপনি কিছু চেষ্টা করে দেখতে পারেন এবং আপনার প্রয়োজনের সাথে আরও কী উপযুক্ত fits আপনার যখন ব্যবহারের কেস না থাকে তখন কোনও লাইব্রেরিতে মতামত সংগ্রহের চেষ্টা করা বোকামির কাজ।
অরবিটে হালকাতা রেস

3
"যদি আমি একটি সাধারণ কমান্ড-লাইন অ্যাপ্লিকেশন লিখছি, তবে কেন আমি কেবল এটির জন্যই কিউটি দিয়ে এটি
ফুটিয়ে তুলব" কমেন্টে

4
@ ডিহুমানাইজার উদাহরণস্বরূপ যখন আপনাকে ফাইল, এক্সএমএল, ইউনিকোড, জসন, রেজিএক্সএক্স, কনক্যুরেন্সী, ডাটাবেস, ইত্যাদির খুব দ্রুত সমাধান করতে হয় এবং ডজন ডজন তৃতীয় পক্ষের লাইব্রেরি ডাউনলোড করতে, গ্রহণ করতে এবং রক্ষণাবেক্ষণ করতে চান না।
ভ্যালেন্টিন হেইনিৎজ

5

যখন আপনি আপনার পণ্য খুঁজছেন নিয়ে বেশি উদ্বিগ্ন করছি কিউটি মত ফ্রেমওয়ার্ক উপযুক্ত একই আপনার পণ্য খুঁজছেন সঙ্গে তুলনায় সব প্ল্যাটফর্মে অধিকার সব প্ল্যাটফর্মে। আজকাল এবং আরও প্রায়ই এই ধরণের অ্যাপ্লিকেশনগুলি ওয়েব-ভিত্তিক প্রযুক্তিতে চলেছে to


4

আমি সম্মত হই যে কিউটিটি কাজ করার জন্য একটি দুর্দান্ত কাঠামো। তবুও, এটির সাথে আমার বেশ কয়েকটি সমস্যা রয়েছে:

  1. এটি সি ++ এ লিখিত, যা সত্যই নিম্ন স্তরের ভাষা। এটি একমাত্র সত্য যে সি ++ হ'ল প্রতিটি কিউটি প্রোগ্রামার অন্যান্য ভাষায় রচিত ফ্রেমওয়ার্কের তুলনায় উল্লেখযোগ্যভাবে কম উত্পাদনশীল করে তুলবে। জিইউআই ডেভলপমেন্ট ল্যাঙ্গুয়েজ হিসাবে সি ++ সহ আমার প্রধান গরুর মাংস এটি হ'ল স্বয়ংক্রিয় মেমরি পরিচালনার কোনও ধারণা নেই, যা বিকাশের প্রক্রিয়াটিকে অনেক বেশি ত্রুটির প্রবণ করে তোলে। এটি অন্তর্মুখী নয়, যা ডিবাগিংকে আরও অনেক কঠিন করে তোলে। অন্যান্য বড় বড় জিইউআই টুলকিটগুলির বেশিরভাগেরই স্বয়ংক্রিয় মেমরি পরিচালনা এবং অন্তর্নির্ধারণের কিছু ধারণা রয়েছে।
  2. প্রতিটি ক্রস প্ল্যাটফর্মের সরঞ্জামকিট সমস্যাটি ভোগ করে যে এটি কেবল সর্বদা সমর্থিত প্ল্যাটফর্মগুলির মধ্যে সর্বনিম্ন সাধারণ ডিনোমিনেটর প্রয়োগ করতে পারে। এটি এবং বিভিন্ন প্ল্যাটফর্মের বিভিন্ন ইউআই নির্দেশিকাগুলি সামগ্রিকভাবে ক্রস প্ল্যাটফর্মের জিইউআইগুলির আকাঙ্ক্ষাকে প্রশ্নবিদ্ধ করে।
  3. Qt আপনার সমস্ত UI কোডিংয়ের উপর কেন্দ্রিক। যদিও আপনি আপনার ইউআই এর কিছু অংশ তৈরি করতে QtDesigner ব্যবহার করতে পারেন তবুও, এটি বলুন, (কোকো / ওবজ-সি) ইন্টারফেস বিল্ডার বা। নেট সরঞ্জামগুলির সাথে তুলনা করার ক্ষেত্রে গুরুত্ব সহকারে অভাব রয়েছে।
  4. যদিও কিউটিটিতে অনেকগুলি নিম্ন-স্তরের অ্যাপ্লিকেশন কার্যকারিতা অন্তর্ভুক্ত রয়েছে, এটি নির্দিষ্ট প্ল্যাটফর্মের জন্য হাতে-তৈরি ফ্রেমওয়ার্কের সাথে তুলনা করতে পারে না। উইন্ডোজ এবং ওএসএক্স উভয়ের জন্য নেটিভ অপারেটিং সিস্টেমের গ্রন্থাগারগুলি কিউটির বাস্তবায়নের তুলনায় উল্লেখযোগ্যভাবে আরও শক্তিশালী। (অডিও ফ্রেমওয়ার্কগুলি, নিম্ন স্তরের ফাইল সিস্টেম অ্যাক্সেস ইত্যাদি ভাবেন)

এটি বলেছিল, আমি দ্রুত অ্যাপ্লিকেশন প্রোটোটাইপিং বা ইন-হাউস অ্যাপ্লিকেশনগুলির জন্য পাইকিউটি ব্যবহার করতে পছন্দ করি। সমস্ত কোডিং করতে পাইথন ব্যবহার করা সি ++ এর সাথে উদ্বেগগুলি হ্রাস করে এবং প্রকৃতপক্ষে Qt কে খুব মনোরম জায়গা করে তোলে।


কিছু মন্তব্যের জবাবে সম্পাদনা করুন:

যখন আমি লিখেছিলাম কিউটিটি সি ++ তে লেখা হচ্ছে, আমি নিজেই কিউটি সম্পর্কে খুব বেশি অভিযোগ করতাম না, তবে এটি যে পরিবেশে বাস করে সে সম্পর্কে আরও ছিল It এটি সত্য যে কিউটি তার নিজস্ব উত্সগুলি খুব ভাল পরিচালনা করে, তবে আপনার সমস্ত জিইউআই-সম্পর্কিত-তবে- না-কিউটি কোডটি সি ++ তেও লিখতে হবে। এমনকি সেখানে, কিউটি অনেকগুলি দুর্দান্ত সরঞ্জাম সরবরাহ করে তবে শেষ পর্যন্ত আপনাকে সেই স্তরে সি ++ সহ ডিল করতে হবে। Qt সি ++ সহনীয় করে তোলে, তবে এটি এখনও সি ++।

অন্তঃসত্ত্বা হিসাবে, আমি যা বলতে চাইছি তা হ'ল: ডিবাগ করার পক্ষে সবচেয়ে কঠিন পরিস্থিতিগুলি তখন যখন আপনার কোনও পয়েন্টারের কাছে পয়েন্টার থাকে যা আপনার মনে হয় যেভাবে করা উচিত তেমন আচরণ করে না। সি ++ এর সাহায্যে আপনার ডিবাগারটি সেই বস্তুর ভিতরে কিছুটা দেখতে সক্ষম হতে পারে (যদি এটি পংক্তিতে তথ্য টাইপ করে থাকে) তবে এটি সর্বদা কার্যকর হয় না। অন্যদিকে, একই পরিস্থিতিতে কোকো নিন। কোকো / ওবজে-সিতে, আপনি ঠিক ডিবাগারের মধ্যেই কোনও বার্তায় বার্তা ('কল ফাংশন') প্রেরণ করতে সক্ষম হবেন। আপনি বস্তুর স্থিতি পরিবর্তন করতে পারবেন, এর বৈশিষ্ট্যগুলির জন্য আপনি এটি জিজ্ঞাসা করতে পারেন, আপনি এটির ধরণ এবং এর ক্রিয়াকলাপের নাম জিজ্ঞাসা করতে পারেন ... এটি ডিবাগিংকে আরও অনেক সুবিধাজনক করে তুলতে পারে। কিউটি / সি ++ এর কাছাকাছি কিছু নেই।


11
1. কিউটি নিজেই মেমরি পরিচালনার যত্ন করে, আপনাকে প্রতিটি 'নতুন' এর পরে 'মুছুন' কল করতে হবে না। 1A। সি ++ নিম্ন স্তরের ভাষা নয়, এটি নিম্ন-স্তরের 'ক্ষমতা' সহ উচ্চ স্তরের ভাষা। ৩. আমি সম্মত, তবে কিউটি QtDesigner এবং একই সময়ে 'প্লেইন কোড' দিয়ে একটি UI তৈরির ব্যবস্থা করে। 4. আবার সম্মত হন, তবে কিউটি দেশীয় এপিআইগুলিও সরবরাহ করে।
দেহুমানাইজার

11
আপনার বিন্দুতে এনআর 1. আমার ধারণা সি ++ এর মতো আধা-স্বয়ংক্রিয় মেমরি পরিচালনা রয়েছে: আপনি যদি স্টাডি :: অটো_পিটার বা বুস্ট :: শেয়ার্ড_পিটার ইত্যাদি স্মার্ট পয়েন্টার ব্যবহার করেন তবে সাধারণত মেমরি মুক্ত করার বিষয়ে আপনার যত্ন নিতে হবে না। এই ধরণের পাত্রে অন্যান্য সংস্থানগুলির জন্যও তৈরি করা যেতে পারে (ফাইলগুলি, সিস্টেম সংস্থান যা মুক্ত করতে হবে)। RAII- প্যাটার্নের ব্যবহার মেমরি পরিচালনায় খুব সাহায্য করে এবং এটি আপনার মধ্যে বাড়ার সাথে সাথে আপনাকে স্মৃতি সম্পর্কে সত্যই চিন্তা করতে হবে না।
দেও

8
"একমাত্র সত্য যে এটি সি ++ অন্যান্য ভাষার লিখিত ফ্রেমওয়ার্কের তুলনায় প্রতিটি কিউটি প্রোগ্রামারকে উল্লেখযোগ্যভাবে কম উত্পাদনশীল করে তুলবে" " [উদ্ধৃতি আবশ্যক]
নাথান ওসমান

4
@ এসকে-যুক্তি: যদিও আমি মনে করি আপনার তৃতীয় বাক্যে সমস্ত শব্দ আমি বুঝতে পেরেছি, আপনি কী বলছেন তা আমার কোনও ধারণা নেই। একটি "অ্যাবস্ট্রাকশন ক্যাপ স্তর" কি? এই বিষয়টির জন্য, "নিম্ন-স্তরের ভাষা" এর উইকিপিডিয়া সংজ্ঞা দেওয়া আপনার প্রথম বাক্যটি মিথ্যা।
ডেভিড থর্নলি

6
@ এসকে-যুক্তি: টেমপ্লেট রূপকটি টুরিং-সম্পূর্ণ, এবং এর সুবিধা গ্রহণের জন্য যথেষ্ট স্মার্ট এবং জ্ঞানবান লোক রয়েছে। আরআইআই দুর্দান্ত আবর্জনা সংগ্রহ নয়, তবে এটি যে সমস্ত ধরণের সংস্থার জন্য কমবেশি কাজ করে তা সত্যই আসে। এখন, বিশেষত, জাভাতে কোন ধরণের বিমূর্তি কাজ করে তবে সি ++ নয়?
ডেভিড থর্নলি

3

আমি সত্যিই কিউটি পছন্দ করি তবে প্রচুর অ্যাপ্লিকেশনগুলির জন্য এটি কিছুটা ভারী ওজন। কখনও কখনও আপনার জটিলতার মাত্রা প্রয়োজন হয় না। কখনও কখনও আপনার Qt এর সমস্ত ওভারহেড ছাড়াই কেবল কিছু সাধারণ প্রয়োজন। প্রতিটি অ্যাপ্লিকেশনকে ইভেন্ট চালিত করার প্রয়োজন হয় না এবং সি ++ টেম্পলেটগুলির একটি যুক্তিসঙ্গত সেট সরবরাহ করে। বুস্ট আরেকটি খুব ভাল সেট সরবরাহ করে এবং নিম্ন-স্তরের কার্যকারিতা (ফাইল, সকেট, পরিচালিত পয়েন্টার ইত্যাদি) অন্তর্ভুক্ত করে যা QT করে।

অন্যান্য অ্যাপ্লিকেশনগুলির লাইসেন্সের প্রয়োজনীয়তা রয়েছে যা জিপিএল, এলজিপিএল বা কিউটির বাণিজ্যিক লাইসেন্সের সাথে ভাল না খায়। জিপিএল বাণিজ্যিক সফ্টওয়্যার জন্য অনুপযুক্ত। স্থায়ীভাবে সংযুক্ত সফ্টওয়্যারগুলির জন্য এলজিপিএল অনুপযুক্ত এবং বাণিজ্যিক লাইসেন্সের জন্য অর্থ ব্যয় হয় - এমন কিছু যা অনেকে দিতে ইচ্ছুক নয়।

কারও কারও কাছে সুরক্ষা বা স্থায়িত্বের বিবেচনা রয়েছে যা Qt এর মতো জটিল গ্রন্থাগারগুলিকে মঞ্জুরি দেয় না।

আপনার উত্সগুলি প্রাক-প্রক্রিয়া করার জন্য আপনাকে এমওকে চালানো দরকার। এটি কোনও বিশাল সমস্যা নয়, তবে এটি নতুন ব্যবহারকারীর পক্ষে কষ্টকর হতে পারে। প্রচুর প্রোগ্রামাররা মনে করেন আপনার কিউটি দিয়ে কিউএইচকে ব্যবহার করা দরকার , তবে এটি একটি ভুল নাম। অন্যান্য বিল্ড সিস্টেমে কিউটি খুব সহজেই প্লাগ করা সম্ভব।

কিছু লক্ষ্য খুব মেমরি বা সিপিইউ বাধা হয়।

এটিতে প্ল্যাটফর্ম-নির্দিষ্ট কিছু গেটচাস রয়েছে। এই গোটাচা বেশিরভাগই অননুমোদিত। পর্যাপ্ত পরিমাণে একটি বড় অ্যাপ্লিকেশন তৈরি করুন এবং আপনি এগুলি চালিয়ে যাবেন এবং অবাক হবেন যে কী ঘটছে (অস্বীকৃতি, আমি শেষবারের মতো ক্রুতে Qt ব্যবহার করেছি 18 মাস আগে, সুতরাং এটি উন্নত হতে পারে)।

এটি কেবল সি ++। অন্যান্য ভাষার বাইন্ডিং বিদ্যমান, তবে তারা Qt যেটি চান তার জন্য অনেকগুলি কার্যকারিতা আড়াল করে বা খারাপভাবে প্রকাশ করে।

কিউটি না ব্যবহার করার অনেক কারণ রয়েছে, সে কারণেই বিকল্প রয়েছে। আপনার সমস্ত কিছু যদি হাতুড়ি হয় তবে প্রতিটি সমস্যা পেরেকের মতো দেখাবে।


3

সর্বাধিক গুরুত্বপূর্ণ তবে উল্লিখিত জিনিস। বড় প্রকল্পে একটি জিনিস এত সমস্যা এবং অ-প্রয়োজনীয় কোডের কারণ হয়। কিউটি-র সিগন্যাল স্লট প্রক্রিয়াটি অদক্ষ। কিউটি উইজেটগুলি ইভেন্ট সাধারণ উইজেটের জন্য প্রয়োজনীয় সংকেত সরবরাহ করে না। উদাহরণস্বরূপ আপনি অন-হওয়ার, onMouseEnter, onMouseLaveve, onKeyReleased, onLostFocus, onGainFocus এবং ইত্যাদির জন্য সংকেত সেট করতে পারবেন না এমনকি QTreeWidget এর মতো সবচেয়ে জটিল উইজেটও এক বা দুটি অতি সাধারণ অব্যর্থ সিগন্যাল সরবরাহ করে না।

হ্যাঁ, আপনি ইভেন্টগুলি ব্যবহার করতে পারেন তবে !!! আপনি কাস্টম ইভেন্ট সহ প্রতিটি উইজেটের জন্য নতুন ক্লাস তৈরি করেছেন। এটি হারিয়ে গেছে বিশাল দক্ষতা;

  • আপনি প্রতিটি কাস্টমাইজড উইজেট অবজেক্ট ইভেন্টটি নতুন করে লিখেছেন ছোট ছোট পরিবর্তন রয়েছে।
  • আপনি কিউটি ডিজাইনারের সমস্ত জিনিস হারাবেন। আপনার পছন্দসই ইভেন্টগুলির সাথে প্রতিটি উইজেটকে প্রচার করতে হবে।
  • প্রকল্প বড় এবং রক্ষণাবেক্ষণ করা শক্ত হয়ে ওঠে।
  • আপনি এ কারণে Qt অপছন্দ করা শুরু করেছেন। এবং .NET কীভাবে প্রতিনিধিদের সরবরাহ করে, সিগন্যাল স্লটের তুলনায় এটি আরও অনেক বেশি কীভাবে, নেট উপাদানগুলি (উইজেটগুলি) সাধারণত আপনি কল্পনা করতে পারেন এমন প্রতিটি ইভেন্ট সরবরাহ করে সে সম্পর্কে কথা বলা শুরু করে। এবং ইত্যাদি.

আমার কলেজের একজন লিখেছেন প্রতিটি কম্বো বাক্স উইজেটের জন্য নতুন কম্বো বক্স ক্লাস তৈরি করা হয়েছে কারণ তাকে কিছু নন সিগন্যাল ইভেন্ট ব্যবহার করতে হয়েছিল। সত্য গল্প...

যাইহোক, কিউটিটি ডাউন-উত্স সহ এখন পর্যন্ত সেরা সি ++ ইউআই কাঠামো।


ইভেন্ট এবং নতুন ক্লাস তৈরি সম্পর্কিত: আপনি ক্লাসে ইভেন্ট ফিল্টার ব্যবহার করতে পারেন যা তাদের প্রতিক্রিয়া জানাতে হবে।
মিঃফক্স

"হ্যাঁ, আপনি ইভেন্টগুলি ব্যবহার করতে পারবেন তবে কাস্টম ইভেন্ট সহ প্রতিটি উইজেটের জন্য আপনি নতুন ক্লাস তৈরি করেছেন This - বেপারটা এমন না. আমি কেবল বুল ইভেন্ট ফিল্টার দিয়ে শেষ করেছি যা বেশ কয়েকটি উইজেট পরিচালনা করে এবং তারপরে সমস্ত শিশু উইজেটগুলিতে ইনস্টল এভেন্টফিল্টার (এটি) পরিচালনা করে। এবং এটি দক্ষতা এবং প্রোগ্রামিং কর্মক্ষমতা হারাচ্ছে না! আসলে আমি কখনই "প্রচারিত উইজেটস" ব্যবহার করি না ... আমি কেবল খালি উইজেটটি ফেলেছি, এটিতে ইভেন্ট ফিল্টার হিসাবে এটি ইনস্টল করব এবং আমার বেশিরভাগ ইভেন্টগুলি আমার মূল সিপিপি শ্রেণিতে পুনরায় সংশোধন করব। এটা ব্যথা চেষ্টা করুন না, :) আপনি সব নতুন শ্রেণীর তৈরি ছাড়া কিউটি মধ্যে প্রায় সবকিছুই কাস্টমাইজ করতে পারেন
Петър Петров

3

আমার নিজের মতামত অনুসারে, সি ++ প্রোগ্রামিং শেখা তাদের ভাষাগুলি লুকিয়ে থাকা অন্যান্য ভাষায় পড়ার চেয়ে সহজ এবং প্রোগ্রামার ব্যাকগ্রাউন্ডে আসলে কী ঘটে তা জানে না। অন্যদিকে কিউটি, দেশিয় সি ++ এর চেয়ে উচ্চতর স্তর তৈরি করতে, সি ++ এর উপরে কিছু সুবিধা যুক্ত করে। সুতরাং কিউটি সি ++ হ'ল একটি নিম্নরূপ কার্যগুলি বা উচ্চ-স্তরের কোনওগুলি একই পদ্ধতিতে বিকাশ করতে চায় তার পক্ষে দুর্দান্ত কাঠামো। সি ++ হ'ল (কিছু অনুশীলনের মাধ্যমে) একটি জটিল এবং সাধারণ ভাষা। কে এটির সাথে চ্যালেঞ্জ করতে চায় না তার জন্য জটিল, যিনি এটি পছন্দ করেন তার পক্ষে সহজ। এটিকে জটিলতার জন্য ছেড়ে যাবেন না!


2

আসল কারণটি প্রযুক্তিগত নয়।

মানুষ আলাদা হতে পারে। তাদের পছন্দগুলিও তাই। অভিন্নতা কোনও মানবিক বৈশিষ্ট্য নয়।


এ কারণেই কি সমস্ত লোক পায়ে হাঁটেন? ঠিক আছে, যাদের কমপক্ষে পা রয়েছে ...
dtech
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.