C++
C++ (කියැවීම: සී ප්ලස් ප්ලස්) යනු C (පරිඝනක භාෂාව) හී වස්තු පාදක(en:object oriented) වෙළුමයි. C++ හී නිර්මාණකරු වන්නේ බිහානෙ ස්ටෘස්ට්රප් (en:Bjarne Stroustrup) ය. මුල් අවදියේ දී C++, C with Classes නමින් හැදින් වුවද 1983 දී C++ ලෙස නම් කරන ලදී. C++ ජනප්රිය ක්රමලේඛන භාෂා අතර ප්රධාන තැනක් ගනී[3][4]. C මෙන්ම C++ ද සම්පාදනය කරන්නේ සහජ(native) ගොනුය. මේ නිසා C++ වේගවත් ව ක්රියාත්මක වන ගොනු සෑදීමට බහුල වශයෙන් යොදාගනී.
en:File:C plus plus book.jpg | |
පැරඩයිමය | Multi-paradigm:[1] procedural, functional, object-oriented, generic |
---|---|
සැලසුම් කලේ | බිහානෙ ස්ටෘස්ට්රප් (Bjarne Stroustrup) |
විකාශක |
|
පළමුව ප්රකාශය | 1983 |
ස්ථායි නිකුතුව | ISO/IEC 14882:2011
/ 2011 |
ටයිප් කිරීමේ ශික්ෂණය | Static, unsafe, nominative |
OS | බහු පද්ධ්තිCross-platform (multi-platform) |
ගොනුනාම දිගුවන් | .h .hh .hpp .hxx .h++ .cc .cpp .cxx .c++ |
වෙබ් අඩවිය | News, status & discussion about Standard C++ |
ප්රධාන ක්රියාත්මක කිරීම් | |
C++ Builder, clang, en:Comeau C/C++, GCC, Intel C++ Compiler, Microsoft Visual C++, Sun Studio | |
උප භාෂා | |
en:Embedded C++, en:Managed C++, en:C++/CLI, en:C++/CX | |
ආභාෂයට ලක් කලේ | |
en:Perl, LPC, Lua, Pike, Ada 95, Java, en:PHP, D, en:C99, C#,[2] Falcon, en:Seed7 | |
|
C++ දෘඩාංග නිර්මාණකරනයේද(en:hardware design) භාවිතා වේ. මූලික සැලසුම් C++ භාවිතයෙන් ලියා පසුව දෘඩාංග විස්තර කිරීමේ භාෂාවකට පරිවර්තනය කරනු ලැබේ[5].
ඉතිහාසයසංස්කරණය
බිහානෙ ස්ටෘස්ට්රප් නම් ඩෙන්මාක් හා බ්රිතාන්ය සම්භවයක් ඇති පරිගණක විද්යාඥයා "සරණි සහිත C" ("C with Classes") භාෂාව සෑදීම 1979දී ආරම්භ කරන ලදී. ඔහුට මෙම කාර්යය කිරීමට තුඩු දුන් හේතූන් අතර විශාල වැඩසටහන් නිර්මානකරණයට හොඳ ධාවන වේගයක් සහිත ක්රමලේඛන භාෂාවක් එවකට නොමැති වීම ප්රධාන විය. ස්ටෘස්ට්රප් en:AT&T Bell Labs හී සේවය කරන සමයේ C සදහා Stimula භාෂාවේ තිබූ විශේෂ ලක්ෂණ එකතු කිරීම ඇරඹිණි. 1983 දී ප්රථම C++ වාණිජ නිකුතුව එළි දැක්විණි. පසුව 1985 දී ස්ටෘස්ට්රප් විසින් රචිත C++ හී නිල ග්රන්ථය en:The C++ Programming Language එළි දැක්විණි.
නිරුක්තියසංස්කරණය
C++ නිර්මාතෘට අනූව, C++ නාමය C වල නව වෙළුමක් බව හොවා දක්වයි. C++ යනු C භාෂාවේ C නම් විචල්යයේ අගය 1කින් වැඩි කිරීමට යොදන විදානයයි.[6] මුලින් C++ හදුන්වන ලද්දේ "new C", "C with classes" ආදී නම් වලිනි, අවසාන නම් ලබාදෙන ලද්දේ 1983 දී රික් මැසිටි(en:Rick Mascitti) විසිනි.
සම්මතකරනයසංස්කරණය
වසර | C++ සම්මතය | විව්යහාර නාමය |
---|---|---|
1998 | ISO/IEC 14882:1998[7] | C++98 |
2003 | ISO/IEC 14882:2003[8] | C++03 |
2007 | ISO/IEC TR 19768:2007[9] | C++TR1 |
2011 | ISO/IEC 14882:2011[10] | C++11 |
2014 | ISO/IEC 14882:2014 | C++14 |
නවතම සම්මතය වන්නේ C++14 ය.
ප්රතිපත්තීන්සංස්කරණය
C++ සකස් කර ඇත්තේ මූලුක ප්රතිපත්ති සමූයකට එකඟ වෙමිනි, මේවා en:The Design and Evolution of C++ (1994) යන පොතෙහි බිහානෙ ස්ටෘස්ට්රප් විස්තර කර ඇත.
- en:statically typed, C මෙන්ම විවිධ පද්ධතීන් වලට පහසුවෙන් පරිවර්තනය(port) කළ හැකිවීම.
- විවිධ ක්රමලේඛන ආකාර වලට සහාය දැක්වීම(en:procedural programming, en:data abstraction, en:object-oriented programming, en:generic programming).
- කේතනකරුට අවශ්යය උපරිම තෝරාගැනීමේ හැකියාව ලබා දීම(ඔහු හෝ ඇය වැරදි තෝරාගැනීම් සිදු කලද).
- C භාෂාව C++ වලම උප කුලකයක් වීම(හැකිතාක් දුරට).
- සෑම පද්ධතියකටම පොදු හැකියාවන් පමණක් භාෂාවට එකතු කිරීම.
- භාවිත නොකරන දේවල් වලට සම්පත් භාවිතා නොකිරීම(overhead)
සම්මත එකතුව(Standard library)සංස්කරණය
C++ සම්මත එකතුව, C සම්මත එකතුව හා STL(සම්මත අච්චු එකතුව) යන දෙකෙන් සෑදී ඇත. මෙයින් භාෂාව පරිශීලනය කරන්නන්ට සම්මතයකට අනූව කෙරෙන දෑ නැවත නැවතත් තමන් විසින් ම කේතනය නොකර සම්මතයේ ඇති සම්මත ඉදිකිරීම(Implementation) භාවිත කිරීමේ අවස්ථාව සැලසේ.
STL(සම්මත අච්චු එකතුව) මුල්වරට සාදන ලද්දේ HP ආයතනය විසිනි පසුව එය SGI මහින් වෙනස්කම් වලට භාජනය කෙරිනි. මෙම අච්චු වල විශේෂත්වය වන්නේ පොදු ඇල්ගොරිදම(en:Generic Algorithms) හා පොදු දත්ත ආකෘති නිර්මාණය කළ හැකිවීමයි. උදාහරණ වශයෙන් එකම කේතය භාවිතයෙන් පූර්ණ සංඛ්යා දෙකක් හා දශම සංඛ්යා දෙකක් එකතු කරගත හැක(බහුරූපීයතාවයේ මේ දෙකට වෙන වෙනම කේත ලිවිය යුතු වේ). මෙය සිදුවන්නේ සංග්රහ කාලයේ(Compile time) දී නිසා ධාවන කාලයේ දී ධාවන ප්රමාදයන් සිදු නොවේ.
භාෂාවසංස්කරණය
C++ හී වැඩිපුර දක්නට ලැබෙන්නේ C භාෂාවේ කාරක රීතීන්ය(syntax). පහත දැක්වෙන්නේ C++ නිර්මාතෘගේ "Hello World" වැඩසටහනයි. මෙය C++ හී සියලු සම්මතයන්ට අනූව නිවැරදි වැඩසටහනකි. යම් ශ්රිතයක ඵල වර්ගය(return
type) void
ගණයට අයිති නොවේ නම් ශ්රිතය අවසාන විය යුත්තේ return
හා යෙදී ඇති ඵලයකිනි(උදාහරණ වශයෙන්, return 1;
). එහෙත් C++ වලදී main
ශ්රිතය පහත ආකාර වීම නිවැරදිය(මෙහිදී return 0;
උපකල්පනය කෙරේ).
# include <iostream>
int main()
{
std::cout << "Hello, world!\n";
}
අතිබැර(Overload) කිරීමසංස්කරණය
Operator | Symbol |
---|---|
Scope resolution operator | ::
|
Conditional operator | ?:
|
dot operator | .
|
Member selection operator | .*
|
"sizeof" operator | sizeof
|
"typeid" operator | typeid
|
C++ කාරක 35කට වැඩි සංඛ්යාවක් ලබාදේ, මේවා මූලික අංක ගණිතය, බිට වෙනස් කිරීම්, සංසන්දනය කිරීම්, තාර්කික කාරක හා වෙනත් ගණයන්ට අයිති වේ. වගුවේ දක්වා ඇති කාරක හැර වෙනත් සියලු ම කාරක අතිබැර කළ හැකිය. නව වස්තූන් සදහා විවිධ කාරක යොදා ගැනීමෙන් සිදුවන වෙනස්කම් භාවිතයට පහසු ආකාරයට සකස් කිරීමට කාරක අතිබැර කිරීමෙන් හැකි වේ.
මතක ගබඩා කළමණාකරනයසංස්කරණය
මේ සදහා ක්රම 4ක් පවතී
- ස්ථිතික - ධාවනය නොවන කෙතයේ ඇති මතක වෙන්කිරීම්(main ශ්රිතයෙන් පිට(global variable) වැනි).
- ස්වයංක්රීය - Stack හි මතකය වෙන්කර ගැනීම, මෙය ධාවනය වන කේතයක් තුළින්(codepath) විචල්යයක් අර්ථ දැක්ව්මේදී(variable definition) සිදුවේ.
- ගතික - Heap හි මතකය වෙන්කර ගැනීම, new හා delete භාවිතයෙන් කළ හැක(C වල භාවිත වූ ආකාරය එනම් malloc හා free ද භාවිත කළ හැක).
- Garbage collected - මේ සදහා C++ වලට පරිබාහිර library එකක් භාවිත කිරීමට සිදුවේ. en:Boehm garbage collector සාමාන්යයෙන් භාවිත වේ.
අච්චු(Templates)සංස්කරණය
C++ හී අච්චු මගින් පොදු ක්රමලේඛනය හදුන්වාදෙයි, අච්චුවක් සෑදූවිට එය C++ කේතයක් ලිවීමට භාවිත වේ. මෙම කේතය ලියැවෙන්නේ සංග්රහ කාලයෙහිය එම නිසා ධාවිත කාලයේ දී ප්රමාදයන්ට ලක් නොවේ. අච්චූන් මඟින් අඩු කාලයක දී ධාවනය වන කේත අඩු කාලයක් වැයකිරීමෙන් සාදාගත හැක. C හී දක්නට ලැබෙන macro වැඩි දියුණු කිරීමෙන් C++ අච්චු සෑදී ඇත, මේවාට සාමාන්ය ආදේයකට වඩා යමක් කළ කැක. අච්චු ස්ථික බහුරූපියතාව ලබාදේ.
වස්තූන්(Objects)සංස්කරණය
C++ වස්තු පාදක ක්රමලේඛනය C භාෂාවට හදුන්වාදේ. වස්තුපාදක ක්රමලේඛනයේ ප්රධාන ලක්ෂණ 4 වන නිබන්ධය(Abstraction), සංක්ෂිප්තකරනය(Encapsulation), උරුමකරනය(Inheritance) හා බහුරූපියතාව(Polymorphism) සදහා C++ සහය දක්වන අතර සම්පත් තම භාරයට ගන්නා යම් වස්තුවක් සම්පත් වෙන් කරගැනීම වස්තුව ඉපැදූ විගස ලබාගැනීම හා මියයන විට එය නැවත පද්ධතියට භාර දීම(Resource Acquisition Is Initialization) යන විශේෂ වස්තුපාදක ලක්ෂණයටද C++ සහය දක්වයි.
සංක්ෂිප්තකරනය(Encapsulation)සංස්කරණය
C++ හී ආකාර 3කින් සංක්ෂිප්තකරනය කළ හැක,
private
පෞද්ගලික, එනම් භාවිතා වන සරණියේ(class) පමණක්.protected
ආරක්ෂිත, උරුම වූ සරණි වල පමණක්.public
පොදු, ඕනෑම ස්ථානයක.
උරුමකරනය(Inheritance)සංස්කරණය
C++ හී සාමාන්ය උරුමකරනය මෙන් බහුඋරුමකරනය ද භාවිත කළ හැක. බහුඋරුමකරනයේදී මව හා පියා එක්ව සැදෙන දරුවා හට මව, පියා දෙදෙනාගේම ලක්ෂණ ලබාදීමට හැකිවේ.
බහුරූපතාව(Polymorphism)සංස්කරණය
බහුරූපතාව පොදු මුහුණතක් හරහා විවිධ වූ ගොඩනැගීම් වලට ඉඩ සලසා දේ.
ස්ථිතික(Static)සංස්කරණය
ශ්රිත අතිබැර(en:Function overloading) කිරීම හා අච්චු(templates) භාවිතය ස්ථිතික බහුරූපතාවට නිදසුන්ය. මේවා සංග්රහ කාලයේ දී සිදවේ. ශ්රිත අතිබැර කිරීමේ දී එක් ශ්රිතයකට වෙනස් පරාමිති ලැයිස්තු හෝ පෙරනිමි පරාමිති තිබිය යුතු වේ. ශ්රිත අත්සන(function signature) එකිනෙකට වෙනස් ශ්රිත පමණනක් අතිබැර කළ හැක.
ගතික(Dynamic)සංස්කරණය
උරමකරනයසංස්කරණය
ධාවන කාලයේ දී විචල්ය යොමු හරහා(references) හෝ දර්ශක හරකා(pointers) යම් මූලික සරණියකින්(base class) සෑදුන වස්තුවක උරුමවූ සරණියේ හෝ මූලික සරණියේ ඇති සාමාජිකයින් වෙත ප්රවේශ විය හැක(උදාහරණ ලෙස, මූලික සරණියේ ගණය(base type) භාවිතා වූ විට මූලික සරණියේ සාමාජිකයන් වෙත ප්රවේශය ලැබේ).
අතථ්ය සාමාජික ශ්රිත(Virtual member functions)සංස්කරණය
මෙයද උරුමකරනයේ දී දක්නට ලැබේ. යම් සරණියක් උරුම වන විට එහි ඇති යම් ශ්රිතයක පරාමිති ලැයිස්තුවට සමාන ලැයිස්තුවක් ඇති තවත් ශ්රිතයක් උරුමකරනය වූ සරණියේ ඇත් නම්, මූලික සරණියේ තිබූ ශ්රිතය ප්රතික්ෂේප වේ, මෙය සිදුවන්නේ ද ධාවන කාලයේ දීය. ශුද්ධ අතථ්ය සාමාජික ශ්රිත යනු මූලික සරණියේ එම ශ්රිතයට අදාළ අර්ථ දැක්වීමක්(function definition) නොමැති විට හා එම ප්රකාශයේ(function declaration) =0
අගට යෙදී තිබෙන විට සිදුවන ප්රතික්ක්ෂේප කිරීමයි.
අමතර කියවීම්සංස්කරණය
යොමුවසංස්කරණය
- ↑ Stroustrup, Bjarne (1997). "1". The C++ Programming Language (Third ed.). ISBN 0-201-88954-4. OCLC 59193992.
{{cite book}}
:|access-date=
requires|url=
(help) - ↑ Naugler, David (2007). "C# 2.0 for C++ and Java programmer: conference workshop". Journal of Computing Sciences in Colleges. 22 (5).
Although C# has been strongly influenced by Java it has also been strongly influenced by C++ and is best viewed as a descendant of both C++ and Java.
{{cite journal}}
: Unknown parameter|month=
ignored (help) - ↑ "Programming Language Popularity". 2009. Retrieved 16 January 2009.
- ↑ "TIOBE Programming Community Index". 2009. Retrieved 3 August 2011.
- ↑ "What's CvSDL?". http://www.cvsdl.com/: cvsdl. Retrieved 8 March 2010.
CvSDL was introduced in 2003 as a C++ class framework with Verilog features that worked like a Verilog simulator. Since then it has been revamped to be a standard-compliant HDL simulator, currently supporting Verilog. It is capable of cosimulating with SystemC. It can be used just as an HDL simulator or to generate executable specifications written in Verilog and SystemC on the hardware side and in C, C++ and SystemC on the software side.
{{cite web}}
: External link in
(help)|location=
- ↑ "Bjarne Stroustrup's FAQ – Where did the name "C++" come from?". Retrieved 16 January 2008.
- ↑ "ISO/IEC 14882:1998".
- ↑ "ISO/IEC 14882:2003".
- ↑ "ISO/IEC TR 19768:2007".
- ↑ "ISO/IEC 14882:2011".
අමතර කියවීම්සංස්කරණය
- Abrahams, David; Gurtovoy, Aleksey. C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond. Addison-Wesley. ISBN 0-321-22725-5.
- Alexandrescu, Andrei (2001). Modern C++ Design: Generic Programming and Design Patterns Applied. Addison-Wesley. ISBN 0-201-70431-5.
- Alexandrescu, Andrei; Sutter, Herb (2004). C++ Design and Coding Standards: Rules and Guidelines for Writing Programs. Addison-Wesley. ISBN 0-321-11358-6.
- Becker, Pete (2006). The C++ Standard Library Extensions : A Tutorial and Reference. Addison-Wesley. ISBN 0-321-41299-0.
- Brokken, Frank (2010). C++ Annotations. University of Groningen. ISBN 90-367-0470-7.
- Coplien, James O. (1992, reprinted with corrections 1994). Advanced C++: Programming Styles and Idioms. ISBN 0-201-54855-0.
{{cite book}}
: Check date values in:|year=
(help)
- Dewhurst, Stephen C. (2005). C++ Common Knowledge: Essential Intermediate Programming. Addison-Wesley. ISBN 0-321-32192-8.
- Information Technology Industry Council (15 October 2003). Programming languages – C++ (Second ed.). Geneva: ISO/IEC. 14882:2003(E).
- Josuttis, Nicolai M. (2012). The C++ Standard Library, A Tutorial and Reference (Second ed.). Addison-Wesley. ISBN 0-321-62321-5.
- Koenig, Andrew; Moo, Barbara E. (2000). Accelerated C++ – Practical Programming by Example. Addison-Wesley. ISBN 0-201-70353-X.
- Lippman, Stanley B.; Lajoie, Josée; Moo, Barbara E. (2011). C++ Primer (Fifth ed.). Addison-Wesley. ISBN 0-470-93244-9.
- Lippman, Stanley B. (1996). Inside the C++ Object Model. Addison-Wesley. ISBN 0-201-83454-5.
- Meyers, Scott (2005). Effective C++ (Third ed.). Addison-Wesley. ISBN 0-321-33487-6.
- Stroustrup, Bjarne (2013). The C++ Programming Language (Fourth ed.). Addison-Wesley. ISBN 978-0-321-56384-2.
- Stroustrup, Bjarne (1994). The Design and Evolution of C++. Addison-Wesley. ISBN 0-201-54330-3.
- Stroustrup, Bjarne (2014). Programming Principles and Practice Using C++ (Second ed.). Addison-Wesley. ISBN 978-0-321-99278-9.
- Sutter, Herb (2001). More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions. Addison-Wesley. ISBN 0-201-70434-X.
- Sutter, Herb (2004). Exceptional C++ Style. Addison-Wesley. ISBN 0-201-76042-8.
- Vandevoorde, David; Josuttis, Nicolai M. (2003). C++ Templates: The complete Guide. Addison-Wesley. ISBN 0-201-73484-2.
External linksසංස්කරණය
C++ ගැන තවත් දේ විකිපිඩියා සහෝදර ව්යාපෘති හරහා සොයාගන්න
| |
වික්ෂනරිය වෙතින් අර්ථ දැක්වීම් | |
කොමන්ස් වෙතින් ඡායාරූප හා මාධ්ය | |
විකිසරසවිය වෙතින් ඉගෙනුම් මූලාශ්ර | |
විකිකියමන් වෙතින් උපුටා දැක්වීම් | |
විකිපොත් වෙතින් පෙළපොත් |
Wikibooks has a book on the topic of |
- JTC1/SC22/WG21 – The ISO/IEC C++ Standard Working Group
- n3242.pdf – Final Committee Draft of "ISO/IEC IS 14882 – Programming Languages – C++" (28 February 2011)
- A paper by Stroustrup showing the timeline of C++ evolution (1979–1991)
- Bjarne Stroustrup's C++ Style and Technique FAQ
- C++ FAQ Lite by Marshall Cline
- C++ FQA Lite – Yossi Kreinin
- Hamilton, Naomi (25 June 2008). "The A-Z of Programming Languages: C++". Computerworld. Interview with Bjarne Stroustrup.
- Kalev, Danny (15 August 2008). "The State of the Language: An Interview with Bjarne Stroustrup". DevX. QuinStreet Inc.
- Katdare, Kaustubh (1 February 2008). "Dr. Bjarne Stroustrup – Inventor of C++". CrazyEngineers.
- Code practices for not breaking binary compatibility between releases of C++ libraries (from KDE Techbase)
- The Standard C++ Foundation is a non-profit organization that promotes the use and understanding of standard C++. Bjarne Stroustrup is a director of the organization.