X10 (programming language): Difference between revisions

Content deleted Content added
Bender the Bot (talk | contribs)
m History: HTTP to HTTPS for SourceForge
 
(130 intermediate revisions by 52 users not shown)
Line 1:
{{Short description|Programming language by IBM}}
{{about|||X10}}
*{{Infobox [[Fortress (programming language)]]
'''X10''' is a [[programming language]] being developed by [[IBM]] at the [[Thomas J. Watson Research Center]] as part of the [[PERCS]] project funded by [[DARPA]]'s [[High Productivity Computing Systems]] (HPCS) program. Its primary authors are Kemal Ebcioglu, Vijay Saraswat, and Vivek Sarkar.<ref>http://www.aurorasoft.net/workshops/lar04/Author_Files/Papers/Vivek_Sarkar_LaR_04_Paper_V1.pdf</ref>
| name = X10
| logo =
| paradigm = [[object-oriented programming|Object-oriented]]
| year = {{Start date and age|2004}}
| designer = Kemal Ebcioğlu, Saravanan Arumugam, Vijay Saraswat, and Vivek Sarkar
| developer = [[IBM]]
| latest release version = [http://x10-lang.org/releases/x10-release-262.html 2.6.2]
| latest release date = {{Start date and age|2019|01|08}}
| typing = [[Static type system|Static]], [[Type system#Strong and weak type systems|strong]], [[Type safety|safe]], constrained
| implementations =
| dialects =
| influenced by = [[C++]], [[Java (programming language)|Java]]
| influenced =
| programming language =
| operating system = [[IBM AIX]], [[Linux]], [[Mac OS X]], [[Windows]]
| license = [[Eclipse Public License]] 1.0
| file ext = .x10
| website = {{URL|x10-lang.org}}
| wikibooks =
| caption =
}}
'''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. Its primary authors are Kemal Ebcioglu, Vijay Saraswat, and Vivek Sarkar.<ref>http://www.aurorasoft.net/workshops/lar04/Author_Files/Papers/Vivek_Sarkar_LaR_04_Paper_V1.pdf</ref>
 
==History==
X10 is designed specifically for [[parallel programming]]. It is an "extended [[subset]]" of the [[Java (programming language)|Java]] programming language, strongly resembling it in most aspects, but featuring additional support for [[Array data structure|arrays]] and [[Concurrency (computer science)|concurrency]]. X10 uses a [[Partitioned global address space]] model.
Its primary authors are Kemal Ebcioğlu, Saravanan Arumugam (Aswath), Vijay Saraswat, and Vivek Sarkar.<ref>{{cite CiteSeerX | last1 = Ebcioğlu | first1 = Kemal | last2 = Saraswat | first2 = Vijay | last3 = Sarkar | first3 = Vivek | title = X10: Programming for Hierarchical Parallelism and NonUniform Data Access | citeseerx = 10.1.1.135.9826 }}</ref>
It supports both [[object-oriented programming|object-oriented]] and non-object-oriented programming paradigms.
 
X10 is designed specifically for [[parallel computing]] using the [[partitioned global address space]] (PGAS) model.
X10 uses the concept of parent and child relationships for tasks to prevent the lock stalemate that can occur when two or more processes wait for each other to finish before they can complete. A task may spawn one or more child tasks, 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>Biever, C. "Computer revolution poses problems for programmers", New Scientist (Vol 193, Number 2594)</ref>
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 web | last1 = Saraswat | first1 = Vijay | last2 = Bloom | first2 = Bard | last3 = Peshansky | first3 = Igor | last4 = Tardieu | first4 = Olivier | last5 = Grove | first5 = David | url = https://x10.sourceforge.net/documentation/languagespec/x10-latest.pdf | title = X10 Language Specification Version 2.6.2 | date = January 4, 2019 }}{{Dead link|date=July 2025 |bot=InternetArchiveBot |fix-attempted=yes }}</ref>
 
X10 uses the concept of parent and child relationships for tasksactivities to prevent the lock stalemate that can occur when two or more processes wait for each other to finish before they can complete. AAn taskactivity may spawn one or more child tasksactivities, 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 (Vol| volume = 193, Number| 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==
* [[Chapel (programming language)|Chapel]]
* [[Coarray Fortran]]
* [[Fortress (programming language)]]
* [[Concurrency (computer science)|Concurrency]]
* [[Partitioned global address space]]
* [[Fortress (programming language)|Fortress]]
* [[Non-blocking algorithm]]
* [[Parallel programming model]]
* [[Unified Parallel C]]
 
==References==
{{reflistReflist}}
 
==External links==
* {{Official website}}
* [http://x10-lang.org X10 home page]
* [https://web.archive.org/web/20110719203355/http://wsdmhp09.hpcl.gwu.edu/kayi.pdf Overview of PGAS languages (including X10)]
* [http://x10.codehaus.org/X10DT+2.0+Installation X10 getting started]
* [https://web.archive.org/web/20050508165133/http://www.research.ibm.com/vee04/Sarkar.pdf Vivek Sarkar's X10 slides]
* [http://www.google.com/url?sa=t&source=web&ct=res&cd=1&ved=0CAcQFjAA&url=http%3A%2F%2Fdist.codehaus.org%2Fx10%2Ftutorials%2Fx10-2.0%2FSuperComputing2009%2FSC09_X10_Tutorial.ppt&rct=j&q=%22SC+2009+PGAS+Languages+Tutorial%22&ei=lBs0S-mCJIKzlAeysLCZBw&usg=AFQjCNEmTh-WvrLTGNU27MkOHf-gTqjnMg&sig2=bmjr4isdkLWJ9r4tau2D4A X10 Tutorial]
* [httphttps://grothoff.org/christian/xtc/x10/ GPLed X10 prototype]
* [http://dist.codehaus.org/x10/documentation/languagespec/x10-200.pdf X10 language specification]
* [https://lists.sourceforge.net/lists/listinfo/x10-users X10 user mailing list]
* [http://wsdmhp09.hpcl.gwu.edu/kayi.pdf Overview of PGAS languages (including X10)]
* [http://ppppcourse.ning.com/forum/topics/home-page-for-lecture-notes Principles and Practice of Parallel Programming in X10 (course notes)]
* [http://www.research.ibm.com/vee04/Sarkar.pdf Vivek Sarkar's X10 slides]
* [http://www.highproductivity.org/ HPCS program]
* [http://grothoff.org/christian/xtc/x10/ GPLed X10 prototype]
* [http://ppppcourse.ning.com/forum/attachment/download?id=3646079%3AUploadedFile%3A1425 a simple streaming example in X10 (Sieve of Eratosthenes problem)]
* [http://docs.codehaus.org/display/XTENLANG/ft FFT in X10]
* [http://docs.codehaus.org/display/XTENLANG/LU LU in X10]
* [http://x10-lang.org/benchmarks HPC and NAS benchmarks in X10]
 
{{IBM FOSS}}
{{Numerical analysis software}}
 
[[Category:IBM software]]
[[Category:Curly bracketArray programming languages]]
[[Category:Concurrent programming languages]]
[[Category:JVM programming languages]]
 
{{compu-lang-stub}}
 
{{compuprog-lang-stub}}
[[ca:X10 (llenguatge de programació)]]
[[ru:X10 (язык программирования)]]
[[fr:X10 (langage de programmation)]]