Modular programming: Difference between revisions

Content deleted Content added
Added pobrelang in language support
Tags: Reverted Visual edit
Undid revision 1105563728 by 2001:8A0:E49F:5800:3F75:CA24:2FFD:3FA3 (talk): non-notable language
Line 24:
 
==Language support==
Languages that formally support the module concept include PobreLang,[[Ada (programming language)|Ada]], [[ALGOL|Algol]], [[BlitzMax]], [[C++]], [[C Sharp (programming language)|C#]], [[Clojure]], [[COBOL]], [[Common_Lisp]], [[D (programming language)|D]], [[Dart (programming language)|Dart]], [[eC (programming language)|eC]], [[Erlang (programming language)|Erlang]], [[Elixir (programming language)|Elixir]], [[Elm (programming language)|Elm]], [[F (programming language)|F]], [[F Sharp (programming language)|F#]], [[Fortran]], [[Go (programming language)|Go]], [[Haskell (programming language)|Haskell]], [[IBM/360]] [[Assembler for an assembly language|Assembler]], [[Control Language]] (CL), [[IBM RPG]], [[Java (programming language)|Java]],{{efn|The term "package" is used for the analog of modules in the JLS;<ref>James Gosling, Bill Joy, Guy Steele, Gilad Bracha, ''The Java Language Specification, Third Edition'', {{ISBN|0-321-24678-0}}, 2005. In the Introduction, it is stated "Chapter 7 describes the structure of a program, which is organized into packages similar to the modules of Modula." The word "module" has no special meaning in Java.</ref> — see [[Java package]]. "[[Java Module System|Modules]]", a kind of collection of packages, are planned for [[Java 9]] as part of [http://openjdk.java.net/projects/jigsaw/ Project Jigsaw]; these were earlier called "superpackages" and planned for Java 7.}} [[MATLAB]], [[ML (programming language)|ML]], [[Modula]], [[Modula-2]], [[Modula-3]], Morpho, [[NEWP]], [[Oberon (programming language)|Oberon]], [[Oberon-2 (programming language)|Oberon-2]], [[Objective-C]], [[OCaml]], several derivatives of [[Pascal (programming language)|Pascal]] ([[Component Pascal]], [[Object Pascal]], [[Turbo Pascal]], [[UCSD Pascal]]), [[Perl]], [[PHP]], [[PL/I]], [[PureBasic]], [[Python (programming language)|Python]], [[R (programming language)|R]], [[Ruby (programming language)|Ruby]],<ref>{{Cite web|url=http://ruby-doc.org/core-2.0/Module.html|title=Class: Module (Ruby 2.0.0)}}</ref> [[Rust (programming language)|Rust]], [[JavaScript]],<ref>[http://www.ecma-international.org/ecma-262/6.0/#sec-modules ECMAScript® 2015 Language Specification, 15.2 Modules]</ref> [[Visual Basic .NET]] and [[WebDNA]].
 
Conspicuous examples of languages that lack support for modules are [[C (programming language)|C]] and have been [[C++]] and Pascal in their original form, [[C (programming language)|C]] and [[C++]] do, however, allow separate compilation and declarative interfaces to be specified using [[header file]]s. Modules were added to Objective-C in [[iOS 7]] (2013); to C++ with [[C++20]],<ref>{{cite web|url=https://isocpp.org/files/papers/n4720.pdf|title=N4720: Working Draft, Extensions to C++ for Modules}}</ref> and Pascal was superseded by [[Modula]] and [[Oberon (programming language)|Oberon]], which included modules from the start, and various derivatives that included modules. [[JavaScript]] has had native modules since [[ECMAScript]] 2015.