4 दशक बाद भी आखिर C/C++ क्‍यों हैं हमारे Syllabus में?

Why Learn C - C++ - Hindi

Why Learn C – C++

Why Learn C / C++ : आज विभिन्‍न प्रकार की जरूरतों को पूरा करने के लिए ढे़र सारी Modern and Advanced Programming Languages का विकास हो चुका है लेकिन फिर भी O-Level से लेकर MCA, M. Tech. व PhD तक के Syllabus में किसी न किसी रूप में C/C++ Programming Language को Included रखा गया है।

क्‍यों?

सरलतम शब्‍दों में इस क्‍यों का जवाब यही है कि C का विकास होने से पहले भी ढे़र सारी अन्‍य Programming Languages थीं जिन्‍हें विभिन्‍न प्रकार की जरूरतों को पूरा करने के लिए Develop किया गया था और उन में से कुछ Languages आज भी उन Universities के Syllabus में है जिन्‍होंने दसकों से अपना Syllabus Revise नहीं किया है। लेकिन Professional Level के Practical Projects में उन Programming Languages का उपयोग अब शायद ही कोई करता हो।

उदाहरण के लिए FORTRAN (FORmula TRANslation) नाम की Programming Language को IBM Company के Engineers व Scientists की एक Team ने Develop किया था, जिसे Develop करने का मूल उद्देश्‍य विभिन्‍न प्रकार के Scientific Formulas को Accuracy के साथ Process करना था ताकि वैज्ञानिकों को उनके Research Work से सम्‍बंधित जो Calculations करनी पड़ती थीं, वे ज्‍यादा जल्‍दी व Accurate हो सकें।

जिस काम के लिए FORTRAN को बनाया गया था, वो काम FORTRAN आज भी उतनी ही सक्षमता के साथ करता है लेकिन FORTRAN को वैज्ञानिकों द्वारा व वैज्ञानिकों के लिए ही बनाया गया था, इसलिए General Purpose Software बनाने के लिए वह कभी ज्‍यादा उपयोगी नहीं हो सकती थी, न ही कभी हो सकी।

इसी तरह से COBOL (COmmon Business Oriented Language) को बड़ी Companies व Government Level के Business, Finance व Administrative Systems से सम्‍बंधित Projects बनाने के लिए ही Develop किया गया था। इसीलिए COBOL का प्रयोग Scientific Tasks को आसानी से Complete करने के लिए नहीं किया जा सकता था।

यानी C का विकास होने से पहले तक जितनी भी Programming Languages को विकसित किया गया, वे सभी किसी न किसी एक Specific Purpose को ही पूरा कर सकते थे।

लेकिन जब C Language को विकसित किया गया, तो ऐसा कोई काम नहीं था, जिसे C Language द्वारा न किया जा सकता हो। इसीलिए दशकों बाद भी C Language को किसी भी Degree Level Course जैसे कि O-Level से PhD तक के Syllabus में Included रखा गया है क्‍योंकि C Language के Develop होने के बाद जितनी भी नई Programming Languages बनी हैं, उन सभी का आधार पर C Language ही है और यदि आपको C/C++ Languages आ अच्‍छा Knowledge है, तो आप दुनियां कि किसी भी Modern Programming Language को बड़ी ही आसानी से सीख व समझ सकते हैं।

अब क्‍योंकि आज जितनी भी Programming Languages Professional Development के लिए Use हो रही हैं, वे सभी C/C++ पर ही आधारित हैं इसलिए C/C++ के आने के बाद जितने भी Applications बनाए गए हैं, सभी की C/C++ Library जरूर उपलब्‍ध है। इसीलिए आज भी C/C++ के नए Standard बनाए जा रहे हैं जहां C11, C Language का Latest Standard है जिसे ISO/IEC द्वारा 2011 में Standardize किया गया है जबकि C++17, C++ Language का Latest Standard है, जिसे ISO/IEC द्वारा 2017 में Standardize किया गया है।

यानी आज भी आप जो कुछ भी किसी अन्‍य Modern Programming Language जैसे कि C# Programming Language या Java Programming Language में कर सकते हैं, वो सबकुछ C/C++ Languages में भी कर सकते हैं। इसलिए यदि आपको लगता है कि C/C++ अब Outdated हो चुकी हैं, तो आप पूरी तरह से गलत हैं।

आप एक बात अच्‍छी तरह से समझ लीजिए कि Languages कभी पुरानी नहीं होतीं। जैसे-जैसे Market में नए तरह के Hardware व Devices आती हैं, उनके अनुरूप उन Devices को Handle व Control करने के लिए विभिन्‍न Programming Languages में नई Libraries को Include किया जाता है, उनके लिए नए Standard बनाए जाते हैं और जरूरत पड़ने पर Language के Core में Modification या Improvements किए जाते हैं।

उदाहरण के लिए आज से 10 साल पहले तक Mobile Phones में WiFi की सुविधा नहीं होती थी। तब केवल BlueTooth, Infrared जैसी तकनीक के जरिए Mobile Phone पर Internet Use किया जाता था। इसलिए उस समय विभिन्‍न Programming Languages में BlueTooth, Infrared Hardware को Access & Manipulate करने के लिए इनसे सम्‍बंधित Libraries को Include किया गया था।

लेकिन अब लगभग सभी नए Mobile Phones से Infrared तकनीक को पूरी तरह से हटा दिया गया है और इसकी जगह WiFi तकनीक ने ले लिया है। इसलिए अब शायद ही कोई BlueTooth के जरिए अपने Mobile से Computer पर Internet Use करता होगा। क्‍योंकि अब WiFi Device के जरिए यही काम बिना कोई BlueTooth Configuration किए हुए बड़ी ही आसानी से लगभग Automatically हो जाता है। इसलिए अब Internet Access से सम्‍बंधित Mobile Apps Create करने के लिए विभिन्‍न Supported Programming Languages में WiFi से सम्‍बंधित Libraries को Add कर लिया गया है।

जबकि जैसे-जैसे Multi-Core CPUs व GPUs का विकास होता जा रहा है, इन्‍हें पूरी तरह से Use करने के लिए विभिन्‍न Programming Languages के Core में Modification किया जा रहा है ताकि वे Programming Languages Multitasking Capabilities से सम्‍बंधित Parallel Programming Features को Support कर सकें।

सरल शब्‍दों में कहें तो जैसे-जैसे नए Hardware आते जाते हैं, उनके अनुरूप ही सबसे पहले C/C++ LibrariesLanguage Constructs को विकसित किया जाता है क्‍योंकि आज तक दुनियां में सबसे ज्‍यादा Software C/C++ Languages का प्रयोग करते हुए ही बनाए गए हैं इसलिए पुराने Applications नए Hardware के साथ Compatible हो सकें, इसके लिए सबसे पहले C/C++ की Library को ही विकसित किया जाता है। साथ ही जब इन Language के Core में कोई Change करने की जरूरत होती है, तब ISO द्वारा C99, C11, C++11, C++14C++17 Standards को भी विकसित किया जाता है।

लेकिन यहां मूल रूप से समझने वाली बात यही है कि किसी भी Language के Core Construct में कभी कभार ही Changes करने की जरूरत पड़ती है। Basically तो हर नए Hardware व तकनीक को Support करने के लिए Language के नए Version के साथ केवल नई Libraries को ही Create करके Add किया जाता है।

उदाहरण के लिए 1999 में C Language का C99 Standard Define किया गया था। उसके बाद अगले 12 सालों तक कोई नया Version नहीं आया क्‍योंकि अगले 12 सालों तक जितने भी तरह के नए Hardware Develop हुए, उनसे सम्‍बंधित Libraries Create करके उन Hardware को आसानी से Access & Manipulate किया जा सकता था।

लेकिन जैसे ही 2005 के आसपास Internet Supported Mobile Phones, Infrared, BlueTooth, WiFi, Multi-Core CPUsGPUs जैसे नए Hardware युक्‍त Devices का चलन बढ़ा और ऐसा महसूस किया जाने लगा कि इन Hardware को बेहतर तरीके से Control करने के लिए C/C++ Languages के Core Constructs में Modification / Addition करने की जरूरत है, तो उन Recommendations को ISO के समक्ष प्रस्‍तुत किया गया और Standard के रूप में 2011 में C11 / C++11 आया।

इसलिए यदि आपको C/C++ Core Language का उपयुक्‍त ज्ञान है, तो आप किसी भी नए Hardware के लिए Application Software Develop कर सकते हैं। क्‍योंकि आपको केवल उस नए Hardware की Library को ही समझना होता है और उसे Access and Manipulate करने से सम्‍बंधित Features को समझते हुए Required जरूरत को पूरा करने वाला Application Create करना होता है।

उदाहरण के लिए यदि आप Device Driver, Operating System, Network System, Graphics या Game Programmer हैं और Desktop Computers के लिए Game Develop करते हैं, तो निश्चित रूप आपको C/C++ का अच्‍छा ज्ञान होगा क्‍योंकि System / Graphics / Game से सम्‍बंधित Software Applications को मूलत: C/C++ में ही Develop किया जाता है। अब यदि आपको Android Mobile के लिए Game Develop करना हो, तो आपको Compulsory रूप से Java सीखने की जरूरत नहीं है। आप चाहें तो केवल उन C/C++ Libraries को समझते हुए Native Android Game App Develop कर सकते हैं, जिनका प्रयोग करते हुए Android Device के GPUGraphics से सम्‍बंधित Features को Handle व Control किया जाता है।

जैसा C/C++ के साथ होता है, वैसा ही अन्‍य Modern Programming Languages के साथ भी होता है। यानी C# या Java जैसी Modern Programming Languages के Core Programming Constructs में भी मूलत: बहुत कम परिवर्तन होता है और हर नए Version में मूलत: कुछ नए Hardware and Feature Support के लिए कुछ नई Libraries को ही Add किया जाता है।

इसीलिए 4 दशक बाद भी C/C++ को आज भी O-Level से लेकर PhD तक पढ़ाया जाता है क्‍योंकि Core Language Construct में पिछले 40 सालों में कुछ ज्‍यादा परिवर्तन नहीं हुआ।

Core Language Construct से तात्‍पर्य Looping Statements, Conditional Statements, Variable, Constants, Structure, Class, Array आदि वे Core Concepts हैं, जो आज भी वैसे ही हैं जैसे तब थे जब C/C++ को पहली बार बनाया गया था।

लेकिन 4 दशक पहले BlueTooth या WiFi नहीं थे इसलिए इनको Access and Manipulate करने से सम्‍बंधित Libraries भी नहीं थीं। आज लगभग सभी Devices इन BlueTooth/WiFi के माध्‍यम से एक दूसरे के साथ Connected हैं, इसलिए इनसे सम्‍बंधित Smart Devices के लिए Smart Software बनाने की जरूरत होती है और इस जरूरत को पूरा करने के लिए इनसे सम्‍बंधित Libraries की जरूरत पड़ती है।

अब हम हमारे इस Article के Title का जवाब समझते हैं कि आखिर 4 दशक बाद भी C/C++ हमारे Syllabus में क्‍यों हैं?  

चूंकि C/C++ वर्तमान में भी Use की जाने वाली सबसे पुरानी Programming Language है। इसलिए इस Language का प्रयोग करते हुए दुनियां के सबसे ज्‍यादा Application Software Develop हुए हैं जो कि विभिन्‍न प्रकार की जरूरतों को पूरा करते हैं। इसीलिए अच्‍छे C/C++ Programmers की भविष्‍य में लम्‍बे समय तक काफी मांग रहने वाली है क्‍योंकि जिन Software को पिछले 40 सालों में C/C++ Programming Languages में बनाया गया है, उन्‍हें Manage, Maintain, ExtendUpgrade करने का काम केवल C/C++ Programmer ही कर सकते हैं।

इन Languages का प्रयोग Simple Digital Watch से लेकर RoboticsSatellites जैसे Advanced Artificial Intelligence से सम्‍बंधित Software में होता है क्‍योंकि ये अब तक की सबसे ज्‍यादा विकसित, Well Optimized, Fast व Hardware Level तक को Access & Manipulate करने में सक्षम Most Advanced Modern Programming Languages हैं जिनमें बने Applications को Run होने के लिए किसी Underlying Platform का होना Compulsory नहीं होता क्‍योंकि हम Device की जरूरत के अनुसार उसके लिए उसका खुद का Unique Platform बनाकर उसमें Application को Embed कर सकते हैं जैसा‍कि D2H, Remote Control, DVD Player, Refrigerator, Point to Point Antenna आ‍दि में होता है।

जबकि JavaC# जैसी Modern Programming Languages केवल उन्‍हीं System पर Run हो सकते हैं, जिन पर क्रमश: Java JRE या .NET CLR Platform Exist हो और हम C# Programming Language या Java Programming Language का प्रयोग करके Complete System Software नहीं बना सकते। इसलिए इनमें बने Applications को किसी Device में बिना C/C++ की मदद लिए हुए Embed नहीं कर सकते।

इसके अलावा C/C++ Compiler Based Languages हैं इसलिए इनकी Performance व Speed किसी भी अन्‍य Language की तुलना में ज्‍यादा होती है। इसी वजह से जितने भी Graphics Related Software बनते हैं, जिनमें ढ़ेर सारे Graphics, Sound, Multimedia, आदि का प्रयोग होता है, उन्‍हें C/C++ में ही बनाया जाता है। इसलिए जब भी कभी Graphics Related Software बनाने होते हैं, तब C/C++ का कोई Alternative नहीं होता।

अत: यदि आप Graphics, Multimedia, Game, Device Driver या Operating System Programmer बनना चाहते हैं, तो आपको C/C++ का बहुत अच्‍छा जानकार बनना ही होगा।

जरूरी नहीं है कि C/C++ का प्रयोग केवल इन्‍हीं Fields में होता है। आप Database Driven ऐसे Business Applications बनाने के लिए भी C/C++ को Use कर सकते हैं जो कि Network Based होते हैं और जहां Speed / Performance काफी महत्‍वपूर्ण होता है।

उदाहरण के लिए Stock Market या Ticket Reservation से सम्‍बंधित Applications पर प्रति सेकण्‍ड लाखों Request को Fulfill करना होता है। इसलिए इस तरह के Applications Develop करने के लिए भी आपके पास C/C++ से बेहतर कोई अन्‍य Programming Language नहीं है।

और क्‍योंकि सभी Modern Programming Languages को या तो C/C++ में ही Develop किया गया है या फिर C/C++ के Programming Constructs के आधार पर ही Develop किया गया है, इसलिए यदि आपको C/C++ का अच्‍छा ज्ञान होता है, तो आप बड़ी ही आसानी से किसी भी अन्‍य Modern General Purpose Programming Language जैसे कि C#, Java, Python, etc… को सीख सकते हैं।

इसी वजह से पिछले 40 सालों से O-Level से लेकर PhD तक सभी Degree Level Courses में C/C++ को Compulsory रूप से Included रखा गया है क्‍योंकि इनका भविष्‍य काफी Long Term है और जब तक John von Neumann के Model पर आधारित Computer Systems, Mobiles, Robots, etc… बनते रहेंगे, C/C++ अपना Important Role Play करते रहेंगे।

उम्‍मीद है इस पोस्‍ट को पढ़कर आप C/C++ के महत्‍व को थोड़ा और गहराई से समझ पाए होंगे और इन्‍हें और अच्‍छी तरह से सीखने पर ध्‍यान देंगे। क्‍योंकि IT Sector के किसी भी Field में Career बनाने की बात क्‍यों न हो, Job Interview के दौरान सबसे ज्‍यादा सवाल तो C/C++ Language पर ही आधारित होते हैं।

इसलिए इन दोनों Languages को फिर से सीखिए क्‍योंकि वास्‍तव में ज्‍यादातर लोगों को केवल वहम होता है कि उन्‍हें C/C++ आती है और ये वहम तभी खत्‍म होता है, जब वे दुबारा से C/C++ में छोटे-छोटे Practical Programs बनाने की कोशिश करना शुरू करते हैं। कहीं आप भी इस वहम का शिकार तो नहीं है, इसका पता आपको तभी चलेगा, जब आप एक बार फिर से C/C++ के विभिन्‍न Core Programming Concepts को Revise करना शुरू करेंगे।

Source:

Blog – ITeBooks in Hindi

Photo Manipulate a Beautiful Snow Queen Scene

 

Today you’ll learn how to create an atmospheric snow queen scene. This tutorial will teach you all kinds of practical techniques including:

  • Combining multiple photos to create a custom backdrop
  • Adding custom lighting effects
  • Using adjustment layers correctly
  • Blending images seamlessly
  • Creating a snow blizzard effect using brushes

Final Image

This is the final image that we’ll be creating:

15_real_estate_bcards_05.jpg

Resources Used In This Tutorial

Continue reading “Photo Manipulate a Beautiful Snow Queen Scene”