X10 (programming language): Difference between revisions

Content deleted Content added
mNo edit summary
Citation bot (talk | contribs)
Alter: template type. | You can use this bot yourself. Report bugs here. | Suggested by Abductive | All pages linked from cached copy of User:Abductive/sandbox | via #UCB_webform_linked 18/440
Line 21:
| 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 Saravanan Arumugam (Aswath), Kemal Ebcioğlu, Vijay Saraswat, and Vivek Sarkar.<ref>{{cite paperdocument | 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>
 
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 paperdocument | last1 = Saraswat | first1 = Vijay | last2 = Bloom | first2 = Bard | last3 = Peshansky | first3 = Igor | last4 = Tardieu | first4 = Olivier | last5 = Grove | first5 = David | url = http://x10.sourceforge.net/documentation/languagespec/x10-latest.pdf | title = X10 Language Specification Version 2.6.2 | date = January 4, 2019 }}</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>