pasar.pts-ptn.net 17 Hours Information Services
Tel/Fax : 021-8762002, 8762003, 8762004, 87912360
Mobile/SMS : 081 1110 4824 27, 0812 9526 2009, 08523 1234 000, 0815 145 78119
WhatsApp : 0817 0816 486, 0812 9526 2009, 0815 145 78119
email : _Contact Us__ please click
Chatting dengan Staf :
ggkarir.com
ggiklan.com
Select Language :     ID   EN   Request Catalog / Brochure (free via post)   Employee Class   Regular
World Encyclopedia ➪ AgricultureAnimalArtAstronomyBiographyCharacterChemicalCultureEcologyEconomicsEducationElectronics
EnvironmentFilmGeographyHistoryIndonesiaJabodetabekLanguageLawLiteratureMathematicsMedical
MilitaryMusicMythologyPhilosophyPhysicsPlantPoliticalPuppetReligionScienceSocietySportsTechnology
Manual / Tutorial   ➪ AntApache ServerHTML 4HTML 5JavaScriptMySQLPerlPHPLinuxShell       Network Encyclopedia
Web Network ➪ Employee ClassRegularEvening ClassS2PTSPartyGeneral    
Reference ➪ Internet, Computers, ICT, OS, etc

  » Cyber University   » Fakultas Pertanian UMJ Jakarta   » Fakultas Teknik UMJ   » FE Universitas MH. Thamrin Jakarta   » FISIP UMJ Jakarta   » FK Universitas MH. Thamrin Jakarta   » IAI Al-Ghurabaa Jakarta
  » IAI Muhammad Azim Jambi   » IBISA Purworejo   » IKIP Widya Darma Surabaya   » Institut Agama Islam Sukabumi   » Institut Teknologi Sains Bandung   » ISIF Cirebon   » ISTA Jakarta
  » ISTN Jakarta   » ITB Muhammadiyah Purbalingga   » ITB STIKOM Bali   » ITB STIKOM Jimbaran Bali   » ITBU Jakarta   » ITEKES Tri Tunas Nasional Makassar   » ITESA Muhamadiyah Semarang
  » ITM Purwakarta   » MA UNHI Denpasar   » Magister Teknik ISTN Jakarta   » Magister Universitas Buddhi Dharma   » Magister Universitas Satyagama   » MH UM SURABAYA   » MH UNKRIS Jakarta
  » MIA FISIP UMJ Jakarta   » MIA UNKRIS Jakarta   » MIKOM FISIP UMJ Jakarta   » MM Patria Artha Makassar   » MM STIE ABI Surabaya   » MM STIE Ganesha Jakarta   » MM STIE GICI Business School Jakarta
  » MM STIE IGI Jakarta   » MM UMIBA Jakarta   » MM UNHI Denpasar   » MM UNKRIS Jakarta   » MPD UM SURABAYA   » MPD UNHI Denpasar   » Mpu Tantular Kedoya Jakarta
  » MT UNKRIS Jakarta   » Politeknik Semen Indonesia   » Polnas Denpasar   » S2 FISIP UMJ Jakarta   » S2 FT UMJ   » S2 NUSA MANDIRI   » S2 STMIK Jakarta
  » S2 UIN Al-Azhaar Lubuklinggau   » S2 UM SURABAYA   » S2 UNHI Denpasar   » S2 UNKRIS Jakarta   » S2 UNSURYA   » Sekolah Tinggi Bisnis Runata   » STAI Al-Akbar Surabaya
  » STAI Al-Andina Sukabumi   » STAI Al-Hidayah Tasikmalaya   » STAI Al-Ittihad Cianjur   » STAI Al-Muhajirin Purwakarta   » STAI Muhammadiyah Tulungagung   » STAI Terpadu Yogyakarta   » STEBI Bina Essa Bandung
  » STEI SEBI Cikarang   » STEI SEBI Depok   » STEI Yogyakarta   » STIBADA MASA Surabaya   » STIE ABI Surabaya   » STIE Al-Rifaie Malang   » STIE Cendekia Semarang
  » STIE Dharma Nasional Jember   » STIE Ganesha Jakarta   » STIE GEMA Bandung   » STIE GICI Business School Bogor   » STIE GICI Business School Depok   » STIE GICI Business School Bekasi   » STIE GICI Business School Jakarta
  » STIE Hidayatullah Depok   » STIE IGI Jakarta   » STIE Indocakti Malang   » STIE Nusantara Makassar   » STIE PASIM Sukabumi   » STIE PEMUDA Surabaya   » STIE Pioneer Manado
  » STIE Trianandra Pemuda Jakarta   » STIE Widya Darma Surabaya   » STIE Widya Persada Jakarta   » STIEKIA Bojonegoro   » STIH Awang Long Samarinda   » STIH Gunung Jati Tangerang   » STIH Litigasi Jakarta
  » STIKI Malang   » STIPER Jember   » STISIP Guna Nusantara Cianjur   » STIT Al-Hikmah Lampung   » STIT Tarbiyatun Nisa Sentul Bogor   » STMIK Jakarta   » STT Bina Tunggal Bekasi
  » STT Mandala Bandung   » STT STIKMA Internasional   » UHAMZAH Medan   » UICM Bandung   » UIN Al-Azhaar Lubuklinggau   » UM Palangkaraya   » UM Surabaya
  » UNAKI Semarang   » UNDARIS Ungaran Semarang   » UNHI Denpasar   » UNIBA Banyuwangi   » UNISA Kuningan Jawa Barat   » UNISMU Purwakarta   » Univ. Bali Dwipa Denpasar Bali
  » Universitas Boyolali   » Universitas Buddhi Dharma   » Universitas Cokroaminoto Makassar   » Universitas Deli Sumatera   » Universitas Dr. Soebandi Jember   » Universitas IVET Semarang   » Universitas Kahuripan Kediri
  » Universitas Mahakarya Asia Yogyakarta   » Universitas MH. Thamrin Jakarta   » Universitas Mitra Bangsa   » Universitas Mochammad Sroedji Jember   » Universitas Mpu Tantular Jakarta   » Universitas Muhammadiyah Jakarta   » Universitas Musi Rawas Lubuklinggau
  » Universitas Nurul Huda Oku Timur   » Universitas Nusa Mandiri Jatiwaringin   » Universitas Nusa Mandiri Kramat   » Universitas Nusa Mandiri Margonda   » Universitas Nusa Mandiri Tangerang   » Universitas Nusantara Manado   » Universitas Pandanaran Semarang
  » Universitas Parna Raya Manado   » Universitas Patria Artha Makassar   » Universitas Saintek Muhammadiyah   » Universitas Satyagama   » Universitas Tanri Abeng Jakarta   » Universitas Teknologi Bandung   » Universitas Teknologi Nusantara
  » Universitas Teknologi Sulawesi Makassar   » Universitas Ubudiyah Indonesia Aceh   » Universitas Yuppentek Indonesia   » UNKRIS Jakarta   » UNSUB Subang   » UNSURYA Jakarta   » UNTARA Cikokol Tangerang
  » UNTARA Tigaraksa Tangerang   » UNU Cirebon   » UNU Kalbar Pontianak   » UNU Kaltim Samarinda   » UNUGHA Cilacap   » UNUSA Surabaya   » UNUSIDA
  » USM Indonesia Medan   » UWIKA SurabayaCombined Information Employee Class entire PTS

Al Quran onlineAdvertisingBarter Link232 Countries155 Types of CatsCity & Province WebsitesCPNSComplete POS codeCorruption Rating
Embassy:  KBRI  Foreign  • Exercise Psychotest  • Civitasbook.com  • Hosting: ID World  • Info Prov, City, District, Village  • International Organizations
Islands in NKRIJob VacancyLibrariesNews & Magazine: ID ForeignNKRI, KPK, MA, etc.Political PartyPatriotPTAPTNPTSHospitalRanch
ScholarshipSholat & Imsak ScheduleSMASMKSMPTV & Radio : Foreign IDFootballWorld Statistics     Academic : Majors Prospectus

Department/Study Program (D3, S1, S2), Curriculum, Prospectus (Career Prospects), and Title/Degree
Undergraduate Programs (S-1)
¤ S1 Accounting
¤ S1 Agribusiness
¤ S1 Agricultural Sciences
¤ S1 Agroteknologi (Agricultural Industry Technology)
¤ S1 Akhwal al Syakhsiyyah / Civil Law of Islam (Sharia)
¤ S1 Animal Sciences
¤ S1 Architectural Engineering
¤ S1 Biology Education
¤ S1 Business/Commerce Administration Science
¤ S1 Chemical Engineering
¤ S1 Civil Engineering
¤ S1 Communication Studies
¤ S1 Computer Engineering / Computer Systems
¤ S1 ECD (Early Childhood Teacher Education)
¤ S1 Electrical Engineering
¤ S1 English Education
¤ S1 English Language / Literature
¤ S1 Food Technology
¤ S1 Indonesian Language and Literature Education
¤ S1 Industrial Engineering
¤ S1 Industrial Product Design
¤ S1 Informatics Engineering
¤ S1 Information System
¤ S1 International Relations
¤ S1 Law/Legal Studies
¤ S1 Management
¤ S1 Mathematics Education
¤ S1 Mechanical Engineering
¤ S1 Nursing
¤ S1 OPJKR (Physical Education, Health, Recreation)
¤ S1 Pancasila and Citizenship Education (PPKN)
¤ S1 Petroleum Engineering
¤ S1 Pharmaceuticals
¤ S1 Planning / Urban and Regional Planning Engineering
¤ S1 Political Sciences
¤ S1 Psychology
¤ S1 Public Health
¤ S1 Public/State Administration Science
¤ S1 Shipping Engineering
¤ S1 Social Welfare Studies
¤ S1 Sociology
¤ S1 Tarbiyah / Islamic Education
¤ S1 Ushuludin / Comparative Religion
¤ S1 Visual Communication Design
Graduate Programs (S-2)
¤ S2 Master of Management / MM

Three Diploma Programs (D-III)
¤ D3 Accounting
¤ D3 Accounting Computer
¤ D3 Business Travel (Business Tourism & Hospitality)
¤ D3 Computer Engineering (Computer Systems)
¤ D3 Electrical Engineering
¤ D3 Finance and Banking
¤ D3 Health Analyst
¤ D3 Informatics Management
¤ D3 Midwifery
¤ D3 MPRS (Hospital Services Management)
¤ D3 Nursing
¤ D3 Nutrition
¤ D3 Pharmaceutical and Food Analysts

Home       Forum : AdultAutomotiveBuddhistChristian, CatholicConfucianEducationHinduIslamPersonalPoetryTechniques

   
Search  
    Informatics Engineering

    Prev  (Comparison of programming lang ...) (Comparison of PVR software packages)  Next    

Comparison of programming paradigms

This article attempts to set out the various similarities and differences between the various programming paradigms as a summary in both graphical and tabular format with links to the separate discussions concerning these similarities and differences in extant Wikipedia articles.

Contents

Main paradigm approaches

The following are considered[by whom?] the main programming paradigms. There is inevitably some overlap in these non mutually-exclusive paradigms but the main features or identifiable differences are summarized in the following table:

None of the main programming paradigms have a precise, globally unanimous definition, let alone an official international standard. Nor is there any agreement on which paradigm constitutes the best approach to developing software. The subroutines that actually implement OOP methods might be ultimately coded in an imperative, functional or procedural style that might, or might not, directly alter state on behalf of the invoking program.

ParadigmDescriptionMain characteristicsRelated paradigm(s)Critics?Examples
ImperativeComputation as statements that directly change a program state (datafields)Direct assignments, common data structures, global variables Edsger W. Dijkstra, Michael A. JacksonC, C++, Java, PHP, Python
StructuredA style of imperative programming with more logical program structureStructograms, indentation, either no, or limited use of, goto statementsImperative C, C++, Java
ProceduralDerived from structured programming, based on the concept of modular programming or the procedure callLocal variables, sequence, selection, iteration, and modularizationStructured, imperative C, C++, Lisp, PHP, Python
FunctionalTreats computation as the evaluation of mathematical functions avoiding state and mutable dataLambda calculus, compositionality, formula, recursion, referential transparency, no side effects  Erlang, Haskell, Lisp, Clojure, Scala
Event-driven including time drivenProgram flow is determined mainly by events, such as mouse clicks or interrupts including timerMain loop, event handlers, asynchronous processesProcedural, dataflow  
Object-orientedTreats datafields as objects manipulated through pre-defined methods onlyObjects, methods, message passing, information hiding, data abstraction, encapsulation, polymorphism, inheritance, serialization-marshalling See here and[1][2]C++, C#, Java, PHP, Python, Ruby
DeclarativeDefines computation logic without defining its detailed control flow4GLs, spreadsheets, report program generators  SQL, regular expressions, CSS
Automata-based programmingTreats programs as a model of a finite state machine or any other formal automataState enumeration, control variable, state changes, isomorphism, state transition tableImperative, event-driven  
ParadigmDescriptionMain characteristicsRelated paradigm(s)Critics?Examples

Differences in terminology

Despite multiple (types of) programming paradigms existing in parallel (with sometimes apparently conflicting definitions), many of the underlying fundamental components remain more or less the same (constants, variables, datafields, subroutines, calls etc.) and must somehow therefore inevitably be incorporated into each separate paradigm with equally similar attributes or functions. The table above is not intended as a guide to precise similarities, but more an index of where to look for more information - based on the different naming of these entities - within each paradigm. Non-standardized implementations of each paradigm in numerous programming languages further complicate the overall picture, especially those languages that support multiple paradigms, each with its own jargon.

"You can know the name of a bird in all the languages of the world, but when you're finished, you'll know absolutely nothing whatever about the bird... So let's look at the bird and see what it's doing-- that's what counts. I learned very early the difference between knowing the name of something and knowing something.
 

Language support

Syntactic sugar is the sweetening of program functionality by introducing language features that facilitate particular usage, even if the end result could be achieved without them. One example of syntactic sugar may arguably be classes in C++ (and in Java, C#, etc.). The C language can support object-oriented programming via its facilities of function pointers, type casting, and structures. However, languages such as C++ aim to make object-oriented programming more convenient by introducing syntax specific to this coding style. Moreover, the specialized syntax works to emphasize the object-oriented approach. Similarly, functions and looping syntax in C (and other procedural and structured programming languages) could be considered syntactic sugar. Assembly language can support procedural or structured programming via its facilities for modifying register values and branching execution depending on program state. However, languages such as C introduced syntax specific to these coding styles to make procedural and structured programming more convenient. Features of the C# (C Sharp) programming language, such as properties and interfaces, similarly do not enable new functionality, but are designed to make good programming practices more prominent and natural.

Some programmers feel that these features are unimportant or even frivolous. For example, Alan Perlis once quipped, in a reference to bracket-delimited languages, that "syntactic sugar causes cancer of the semicolon" (see Epigrams on Programming).

An extension of this is the syntactic saccharin, or gratuitous syntax that does not make programming easier.[3]

Performance comparison

Purely in terms of total instruction path length, a program coded in an imperative style, without using any subroutines at all, would have the lowest count. However, the binary size of such a program might be larger than the same program coded using subroutines (as in functional and procedural programming) and would reference more "non-local" physical instructions that may increase cache misses and increase instruction fetch overhead in modern processors.

The paradigms that use subroutines extensively (including functional, procedural and object-oriented) and do not also use significant inlining (via compiler optimizations) will, consequently, use a greater percentage of total resources on the subroutine linkages themselves. Object oriented programs that do not deliberately alter program state directly, instead using mutator methods (or "setters") to encapsulate these state changes, will, as a direct consequence, have a greater overhead. This is due to the fact that message passing is essentially a subroutine call, but with three more additional overheads: dynamic memory allocation, parameter copying and dynamic dispatch. Obtaining memory from the heap and copying parameters for message passing may involve significant resources that far exceed those required for the state change itself. Accessors (or "getters") that merely return the values of private member variables also depend upon similar message passing subroutines, instead of using a more direct assignment (or comparison), adding to total path length.

Managed code

For programs executing in a managed code environment, such as the .NET Framework, many issues affect performance that are significantly affected by the programming language paradigm and various language features used.[4]

Pseudocode examples comparing various paradigms

A pseudocode comparison of imperative, procedural, and object oriented approaches used to calculate the area of a circle (   \pi r^2.\, ), assuming no subroutine inlining, no macro preprocessors, register arithmetic and weighting each instruction 'step' as just 1 instruction - as a crude measure of instruction path length - is presented below. The instruction step that is conceptually performing the actual state change is highlighted in bold typeface in each case. Note that the actual arithmetic operations used to compute the area of the circle are the same in all three paradigms, with the difference being that the procedural and object-oriented paradigms wrap those operations in a subroutine call that makes the computation general and reusable. The same effect could be achieved in a purely imperative program using a macro preprocessor at just the cost of increased program size (only at each macro invocation site) without a corresponding pro rata runtime cost (proportional to n invocations - that may be situated within an inner loop for instance). Conversely, subroutine inlining by a compiler could reduce procedural programs to something similar in size to the purely imperative code. However, for object-oriented programs, even with inlining, messages still have to be built (from copies of the arguments) for processing by the object-oriented methods. The overhead of calls, virtual or otherwise, is not dominated by the control flow alteration itself - but by the surrounding calling convention costs, like prologue and epilogue code, stack setup and argument passing[5] (see here[6] for more realistic instruction path length, stack and other costs associated with calls on an x86 platform). See also here[7] for a slide presentation by Eric S. Roberts ("The Allocation of Memory to Variables", chapter 7)[8] - illustrating the use of stack and heap memory usage when summing three rational numbers in the Java object-oriented language.

ImperativeProceduralObject-oriented
 load r;                      1 r2 = r * r;                  2 result = r2 * "3.142";       3. ..................... storage .............result variableconstant "3.142"
area proc(r2,res):   push stack                                 5   load r2;                                   6   r3 = r2 * r2;                              7   res = r3 * "3.142";                        8   pop stack                                  9   return;                                   10...............................................main proc:   load r;                                    1   call area(r,result);    +load p = address of parameter list;      2    +load v = address of subroutine 'area';   3    +goto v with return;                      4........ storage .............result variableconstant "3.142" parameter list variablefunction pointer (==>area)stack storage
circle.area method(r2):   push stack                                 7   load r2;                                   8   r3 = r2 * r2;                              9   res = r3 * "3.142";                       10   pop stack                                 11   return(res);                           12,13...............................................main proc:   load r;                                    1   result = circle.area(r);       +allocate heap storage;                 2[See 1]                        +copy r to message;                     3      +load p = address of message;           4      +load v = addr. of method 'circle.area' 5      +goto v with return;                    6...... storage .............result variable (assumed pre-allocated)immutable variable "3.142" (final)(heap) message variable for circle method callvtable(==>area)stack storage
  1. ^ See section: Allocation of dynamic memory for message and object storage

The advantages of procedural abstraction and object-oriented-style polymorphism are not well illustrated by a small example like the one above. This example is designed principally to illustrate some intrinsic performance differences, not abstraction or code re-use.

Subroutine, method call overhead

The presence of a (called) subroutine in a program contributes nothing extra to the functionality of the program regardless of paradigm, but may contribute greatly to the structuring and generality of the program, making it much easier to write, modify, and extend.[9] The extent to which different paradigms utilize subroutines (and their consequent memory requirements) influences the overall performance of the complete algorithm, although as Guy Steele pointed out in a 1977 paper, a well-designed programming language implementation can have very low overheads for procedural abstraction (but laments, in most implementations, that they seldom achieve this in practice - being "rather thoughtless or careless in this regard"). In the same paper, Steele also makes a considered case for automata-based programming (utilizing procedure calls with tail recursion) and concludes that "we should have a healthy respect for procedure calls" (because they are powerful) but suggested "use them sparingly"[9]

In terms of the frequency of subroutine calls:

  • for procedural programming, the granularity of the code is largely determined by the number of discrete procedures or modules.
  • for functional programming, frequent calls to library subroutines are commonplace[citation needed] (but may be frequently inlined by the optimizing compiler)
  • for object-oriented programming, the number of method calls invoked is also partly determined by the granularity of the data structures and may therefore include many read-only accesses to low level objects that are encapsulated (and therefore accessible in no other, more direct, way). Since increased granularity is a prerequisite for greater code reuse, the tendency is towards fine-grained data structures, and a corresponding increase in the number of discrete objects (and their methods) and, consequently, subroutine calls. The creation of god objects is actively discouraged. Constructors also add to the count as they are also subroutine calls (unless they are inlined). Performance problems caused by excessive granularity may not become apparent until scalability becomes an issue.
  • for other paradigms, where a mixture of the above paradigms may be employed, subroutine usage is less predictable.

Allocation of dynamic memory for message and object storage

Uniquely, the object-oriented paradigm involves dynamic allocation of memory from heap storage for both object creation and message passing. A 1994 benchmark - "Memory Allocation Costs in Large C and C++ Programs" conducted by Digital Equipment Corporation on a variety of software, using an instruction-level profiling tool, measured how many instructions were required per dynamic storage allocation. The results showed that the lowest absolute number of instructions executed averaged around 50 but others reached as high as 611.[10] See also "Heap:Pleasures and pains" by Murali R. Krishnan[11] that states "Heap implementations tend to stay general for all platforms, and hence have heavy overhead". The 1996 IBM paper "Scalability of Dynamic Storage Allocation Algorithms" by Arun Iyengar of IBM [12] demonstrates various dynamic storage algorithms and their respective instruction counts. Even the recommended MFLF I algorithm (H.S. Stone, RC 9674) shows instruction counts in a range between 200 and 400. The above pseudocode example does not include a realistic estimate of this memory allocation pathlength or the memory prefix overheads involved and the subsequent associated garbage collection overheads. Suggesting strongly that heap allocation is a non-trivial task, one open source microallocator, by game developer John W. Ratcliff, consists of nearly 1,000 lines of code.[13]

Dynamically dispatched message calls v. direct procedure call overheads

In their Abstract "Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis",[14] Jeffrey Dean, David Grove, and Craig Chambers of the Department of Computer Science and Engineering, at the University of Washington, claim that "Heavy use of inheritance and dynamically-bound messages is likely to make code more extensible and reusable, but it also imposes a significant performance overhead, compared to an equivalent but non-extensible program written in a non-object-oriented manner. In some domains, such as structured graphics packages, the performance cost of the extra flexibility provided by using a heavily object-oriented style is acceptable. However, in other domains, such as basic data structure libraries, numerical computing packages, rendering libraries, and trace-driven simulation frameworks, the cost of message passing can be too great, forcing the programmer to avoid object-oriented programming in the “hot spots” of their application."

Serialization of objects

Serialization imposes quite considerable overheads when passing objects from one system to another, especially when the transfer is in human-readable formats such as XML and JSON. This contrasts with compact binary formats for non object-oriented data. Both encoding and decoding of the objects data value and its attributes are involved in the serialization process (that also includes awareness of complex issues such as inheritance, encapsulation and data hiding).

Parallel computing

Carnegie-Mellon University Professor Robert Harper in March 2011 wrote: "This semester Dan Licata and I are co-teaching a new course on functional programming for first-year prospective CS majors... Object-oriented programming is eliminated entirely from the introductory curriculum, because it is both anti-modular and anti-parallel by its very nature, and hence unsuitable for a modern CS curriculum. A proposed new course on object-oriented design methodology will be offered at the sophomore level for those students who wish to study this topic."[15]

See also

References

  1. ^ Shelly, Asaf (2008-08-22). "Flaws of Object-oriented Modeling". Intel Software Network. http://software.intel.com/en-us/blogs/2008/08/22/flaws-of-object-oriented-modeling/. Retrieved 2010-07-04.
  2. ^ Yegge, Steve (2006-03-30). "Execution in the Kingdom of Nouns". steve-yegge.blogspot.com. http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html. Retrieved 2010-07-03.
  3. ^ "The Jargon File v4.4.7: "syntactic sugar"". http://www.retrologic.com/jargon/S/syntactic-sugar.html.
  4. ^ Gray, Jan (June 2003). "Writing Faster Managed Code: Know What Things Cost". MSDN. Microsoft. http://msdn.microsoft.com/en-us/library/ms973852.
  5. ^ "The True Cost of Calls". wordpress.com. 2008-12-30. http://hbfs.wordpress.com/2008/12/30/the-true-cost-of-calls/.
  6. ^ http://en.wikibooks.org/wiki/X86_Disassembly/Functions_and_Stack_Frames
  7. ^ Roberts, Eric S. (2008). "Art and Science of Java; Chapter 7: Objects and Memory". Stanford University. http://www-cs-faculty.stanford.edu/~eroberts/books/ArtAndScienceOfJava/slides/07-ObjectsAndMemory.ppt.
  8. ^ Roberts, Eric S. (2008). Art and Science of Java. Addison-Wesley. ISBN 978-0-321-48612-7. 
  9. ^ a b Guy Lewis Steele, Jr. "Debunking the 'Expensive Procedure Call' Myth, or, Procedure Call Implementations Considered Harmful, or, Lambda: The Ultimate GOTO". MIT AI Lab. AI Lab Memo AIM-443. October 1977. [1][2][3]
  10. ^ David Detlefs and Al Dosser and Benjamin Zorn (1994-06). "Memory Allocation Costs in Large C and C++ Programs; Page 532". SOFTWARE—PRACTICE AND EXPERIENCE 24 (6): 527–542. CiteSeerX: 10.1.1.30.3073. 
  11. ^ Krishnan, Murali R. (1999-02). "Heap: Pleasures and pains". microsoft.com. http://msdn.microsoft.com/en-us/library/ms810466%28v=MSDN.10%29.aspx.
  12. ^ "Scalability of Dynamic Storage Allocation Algorithms". CiteSeerX: 10.1.1.3.3759.
  13. ^ "MicroAllocator.h". Google Code. Google. http://code.google.com/p/microallocator/. Retrieved 2012-01-29.
  14. ^ Jeffrey Dean, David Grove, and Craig Chambers. Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis. University of Washington. doi:10.1007/3-540-49538-X_5. CiteSeerX: 10.1.1.117.2420. 
  15. ^ Teaching FP to Freshmen, from Harper's blog about teaching introductory computer science.[4]

Further reading

External links

    Prev  (Comparison of programming lang ...) (Comparison of PVR software packages)  Next    





Tags: Comparison of programming paradigms, Informatics Engineering, 464, Comparison of programming paradigms Programming paradigms Action Agent oriented Aspect oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computing Relativistic programming Data driven Declarative (contrast: Imperative ) Constraint Dataflow Cell oriented ( spreadsheets ) Reactive Intensional Functional Logic Abductive logic Answer set Constraint logic Functional, Comparison of programming paradigms, English, Instruction Examples, Tutorials, Reference, Books, Guide pasar, pts-ptn.net
 All Forums
 Informatics Science Books
 Job Fairs
 Reader Set
 Waivers money Education Application
 Download Brochures
 Online Registration
 Online Tuition Programs in the Best 168 PTS
 Free Tuition Fee Program
 Businessman School
 Master School Program
 Day College Program
 Afternoon / Evening Course

 Diverse Adverts
 Prayer Times
 Al Quran Online
 Psychological Test Questions
Abroad Site
please click
List of Heroes NKRI
Literature

1. UWIKA Surabaya - University of Widya Kartika Surabaya - Campus UWIKA : Jl. Sutorejo Prima Utara II No.1, Kalisari, Kec. Mulyorejo, Kota Surabaya, Jawa Timur 60112
2. Universitas Saintek Muhammadiy - Muhammadiyah University of Science - Campus : Jl. KH. A. Dahlan No 20, Matraman - Jakarta Timur 13130
3. USM Indonesia Medan - University of Sari Mutiara Indonesia Medan - Campus USM INDONESIA : Jalan Kapten Muslim No. 79, Medan
4. UNUSIDA - Universitas Nahdlatul Ulama Sidoarjo - Campus UNUSIDA :Jl. Monginsidi No.A23, Sidoklumpuk, Sidokumpul, Kec. Sidoarjo, Kabupaten Sidoarjo, Jawa Timur 61218
5. UNUSA Surabaya - University of Nahdlatul Ulama Surabaya - CampusUNUSA : Jl. Jemur Sari No. 57, Jemur Wonosari, Wonocolo, Surabaya, Jawa Timur
6. UNUGHA Cilacap - University of Nahdlatul Ulama Al Ghazali Cilacap - Campus UNUGHA : Jl. Kemerdekaan Barat No 17 Kesugihan Kidul Cilacap Jawa Tengah
7. UNU Kaltim Samarinda - University of Nahdlatul Ulama , East Kalimantan Samarinda - Campus UNU KALTIM : Jl. KH. Harun Nafsi Gg. Dharma, Kel. Rapak Dalam Kec. Loa Janan Ilir Samarinda
8. UNU Kalbar Pontianak - University of Nahdlatul Ulama West Kalimantan - Campus UNU KALBAR : Jl. Ahmad Yani II Jl. Parit Derabak, Kec. Sungai Raya, Kabupaten Kubu Raya, Kalimantan Barat.
9. UNU Cirebon - University of Nahdlatul Ulama Cirebon - Campus : Jl. Sisingamangaraja No. 33, Lemahwungkuk, Panjunan, Kec. Lemahwungkuk, Kota Cirebon, Jawa Barat 45111
10. UNTARA Tigaraksa Tangerang - University of Tangerang Raya Tigaraksa - Campus A Tigarakasa : Komplek Perumahan Sudirman Indah, Jl. Ki Mas Laeng, Jl. Syeh Mubarok No.25, Tigaraksa, Kab. Tangerang - Banten
- Campus B Cikokol : Mahkota Mas, Blok E 28-30, Jalan MH Thamrin, Kebon Nanas, Cikokol, Tangerang, Kec. Tangerang, Kota Tangerang, Banten 15117
binatunggal.ac.id  |  undaris.web.id  |  indocakti.web.id  |  mh-undaris.web.id  |  s2-umb.web.id  |  kelaskaryawan.untara.ac.id  |  mpd-iaialazhaar.web.id  |  upri.web.id  |  upri-makassar.web.id  |  p2k.istn.ac.id  |  p2k.itsb.ac.id