X10 (programming language): Difference between revisions

Content deleted Content added
m convert dodgy URL to ID using AWB
Bender the Bot (talk | contribs)
m History: HTTP to HTTPS for SourceForge
 
(42 intermediate revisions by 24 users not shown)
Line 1:
{{Short description|Programming language by IBM}}
{{Infobox programming language
| name = X10
| logo =
| paradigm = [[object-oriented programming|Object-oriented]]
| caption =
| latest release date year = {{Start date and age|2014|12|042004}}
| file ext = .x10
| designer = Kemal Ebcioğlu, Saravanan Arumugam, Vijay Saraswat, and Vivek Sarkar
| paradigm = [[object-oriented programming|Object-oriented]]
| developer = [[IBM]]
| year = 2004
| latest release version = [http://x10-lang.org/softwarereleases/downloadx10-x10/release-list262.html?id=265 2.56.12]
| designer = Kemal Ebcioğlu, Vijay Saraswat, and Vivek Sarkar
| latest release date = {{Start date and age|2019|01|08}}
| developer = [[IBM]]
| typing = [[Static type system|Static]], [[Type system#Strong and weak type systems|strong]], [[Type safety|safe]], constrained
| latest release version = [http://x10-lang.org/software/download-x10/release-list.html?id=265 2.5.1]
| implementations =
| latest release date = {{Start date and age|2014|12|04}}
| dialects =
| typing = [[type system|Static, strong, safe, constrained]]
| influenced by = [[C++]], [[Java (programming language)|Java]]
| implementations =
| influenced =
| dialects =
| programming language =
| influenced by = [[C++]], [[Java (programming language)|Java]]
| operating system = [[IBM AIX]], [[Linux]], [[Mac OS X]], [[Windows]]
| influenced =
| license = [[Eclipse Public License]] 1.0
| programming language =
| file ext = .x10
| operating system = [[IBM AIX]], [[Linux]], [[Mac OS X]], [[Windows]]
| website = {{URL|x10-lang.org}}
| license = [[Eclipse Public License]] 1.0
| wikibooks =
| website = {{URL|x10-lang.org}}
| caption =
| wikibooks =
}}
'''X10''' is a [[programming language]] being developed by [[IBM]] at the [[Thomas J. Watson Research Center]] as part of the Productive, Easy-to-use, Reliable Computing System ([[PERCS]]) project funded by [[DARPA]]'s [[High Productivity Computing Systems]] (HPCS) program.

==History==
Its primary authors are Kemal Ebcioğlu, Saravanan Arumugam (Aswath), Vijay Saraswat, and Vivek Sarkar.<ref>{{cite paperCiteSeerX | last1 = Ebcioğlu | first1 = Kemal | last2 = Saraswat | first2 = Vijay | last3 = Sarkar | first3 = Vivek | title = X10: Programming for Hierarchical Parallelism and NonUniform Data Access | idciteseerx = {{citeseerx|10.1.1.135.9826}} }}</ref>
 
X10 is designed specifically for [[parallel computing]] using the [[partitioned global address space]] (PGAS) model.
A computation is divided among a set of ''places'', each of which holds some data and hosts one or more ''activities'' that operate on those data. It has a constrained type system for object-oriented programming, a form of [[dependent types]]. Other features include user-defined primitive ''struct'' types; globally distributed ''arrays'', and structured and unstructured parallelism.<ref>{{cite paperweb | last1 = Saraswat | first1 = Vijay | last2 = Bloom | first2 = Bard | last3 = Peshansky | first3 = Igor | last4 = Tardieu | first4 = Olivier | last5 = Grove | first5 = David | url = httphttps://x10.sourceforge.net/documentation/languagespec/x10-latest.pdf | title = X10 Language Specification Version 2.56.2 | date = OctoberJanuary 34, 20142019 }}{{Dead link|date=July 2025 |bot=InternetArchiveBot |fix-attempted=yes }}</ref>
 
X10 uses the concept of parent and child relationships for activities to prevent the lock stalemate that can occur when two or more processes wait for each other to finish before they can complete. An activity may spawn one or more child activities, which may themselves have children. Children cannot wait for a parent to finish, but a parent can wait for a child using the ''finish'' command.<ref>{{cite journal | last = Biever | first = C. | title = Computer revolution poses problems for programmers | journal = New Scientist | volume = 193 | issue = 2594 }}</ref>
 
==Example code==
===[[Hello, World!]]===
{{sxhl|2=x10|1=
/** Example file for the X10 programming language (http://x10-lang.org).
*/
class Example {
public static def main(Rail[String]) {
Console.OUT.println("Hello, World!"); // say hello.
}
}
}}<ref>{{github|https://github.com/pygments/pygments/blob/master/tests/examplefiles/x10/example.x10|pygments/tests/examplefiles/x10/example.x10}}</ref>
 
==See also==
Line 38 ⟶ 54:
 
==References==
{{reflistReflist}}
 
==External links==
* {{Official website|x10-lang.org}}
* [https://web.archive.org/web/20110719203355/http://wsdmhp09.hpcl.gwu.edu/kayi.pdf Overview of PGAS languages]
* [https://web.archive.org/web/20050508165133/http://www.research.ibm.com/vee04/Sarkar.pdf Vivek Sarkar's X10 slides]
* [httphttps://grothoff.org/christian/xtc/x10/ GPLed X10 prototype]
 
{{IBM FOSS}}
{{Numerical analysis software}}
 
[[Category:IBM software]]