{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2023,2,18]],"date-time":"2023-02-18T23:29:11Z","timestamp":1676762951068},"reference-count":21,"publisher":"Walter de Gruyter GmbH","issue":"1","license":[{"start":{"date-parts":[[2017,12,1]],"date-time":"2017-12-01T00:00:00Z","timestamp":1512086400000},"content-version":"unspecified","delay-in-days":0,"URL":"http:\/\/creativecommons.org\/licenses\/by-nc-nd\/4.0"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2017,12,1]]},"abstract":"<jats:title>Abstract<\/jats:title>\n               <jats:p>Implementation of an emulator of MIX, a mythical computer invented by Donald Knuth, is used as a case study of the features of the Scala programming language. The developed emulator provides rich opportunities for program debugging, such as tracking intermediate steps of program execution, an opportunity to run a program in the binary or the decimal mode of MIX, verification of correct synchronisation of input\/output operations. Such Scala features as cross-compilation, family polymorphism and support for immutable data structures have proved to be useful for implementation of the emulator. The authors of the paper also propose some improvements to these features: flexible definition of family-polymorphic types, integration of family polymorphism with generics, establishing full equivalence between mutating operations on mutable data types and copy-and-modify operations on immutable data types. The emulator is free and open source software available at <jats:ext-link xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" ext-link-type=\"uri\" xlink:href=\"http:\/\/www.mix-emulator.org\">www.mix-emulator.org<\/jats:ext-link>.<\/jats:p>","DOI":"10.1515\/acss-2017-0017","type":"journal-article","created":{"date-parts":[[2017,12,30]],"date-time":"2017-12-30T22:15:23Z","timestamp":1514672123000},"page":"47-53","source":"Crossref","is-referenced-by-count":1,"title":["Implementation of a MIX Emulator: A Case Study of the Scala Programming Language Facilities"],"prefix":"10.1515","volume":"22","author":[{"given":"Ruslan","family":"Batdalov","sequence":"first","affiliation":[{"name":"Riga Technical University , Latvia"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Oksana","family":"\u0145ikiforova","sequence":"additional","affiliation":[{"name":"Riga Technical University , Latvia"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"374","published-online":{"date-parts":[[2017,12,27]]},"reference":[{"key":"2021040700302334319_j_acss-2017-0017_ref_001_w2aab2b8c10b1b7b1ab1ab1Aa","unstructured":"[1] D. E. Knuth, The Art of Computer Programming, Volume 1: Fundamental Algorithms. Addison-Wesley, 1997."},{"key":"2021040700302334319_j_acss-2017-0017_ref_002_w2aab2b8c10b1b7b1ab1ab2Aa","unstructured":"[2] D. E. Knuth, The Art of Computer Programming, Volume 1, Fascicle 1: MMIX \u2013 A RISC Computer for the New Millennium. Addison-Wesley, 2005."},{"key":"2021040700302334319_j_acss-2017-0017_ref_003_w2aab2b8c10b1b7b1ab1ab3Aa","unstructured":"[3] \u201cGNU MIX Development Kit (MDK),\u201d [Online]. Available: https:\/\/www.gnu.org\/software\/mdk\/mdk.html"},{"key":"2021040700302334319_j_acss-2017-0017_ref_004_w2aab2b8c10b1b7b1ab1ab4Aa","unstructured":"[4] \u201cJMixSim,\u201d [Online]. Available: https:\/\/sourceforge.net\/projects\/jmixsim"},{"key":"2021040700302334319_j_acss-2017-0017_ref_005_w2aab2b8c10b1b7b1ab1ab5Aa","unstructured":"[5] \u201cMixIDE,\u201d [Online]. Available: http:\/\/mixide.sourceforge.net"},{"key":"2021040700302334319_j_acss-2017-0017_ref_006_w2aab2b8c10b1b7b1ab1ab6Aa","unstructured":"[6] \u201cMIX Builder,\u201d [Online]. Available: http:\/\/www.menees.com\/MIXBuilder.htm"},{"key":"2021040700302334319_j_acss-2017-0017_ref_007_w2aab2b8c10b1b7b1ab1ab7Aa","unstructured":"[7] \u201cThe Expandable MIX Emulator (EMIX),\u201d [Online]. Available: http:\/\/dandrade.tripod.com"},{"key":"2021040700302334319_j_acss-2017-0017_ref_008_w2aab2b8c10b1b7b1ab1ab8Aa","unstructured":"[8] \u201cMIX Assembler and Simulator,\u201d [Online]. Available: http:\/\/puszcza.gnu.org.ua\/software\/mix\/"},{"key":"2021040700302334319_j_acss-2017-0017_ref_009_w2aab2b8c10b1b7b1ab1ab9Aa","unstructured":"[9] \u201cMIX,\u201d [Online]. Available: http:\/\/web.archive.org\/web\/20080805212106\/http:\/\/swiss.csail.mit.edu:80\/~adler\/MIX"},{"key":"2021040700302334319_j_acss-2017-0017_ref_010_w2aab2b8c10b1b7b1ab1ac10Aa","unstructured":"[10] \u201cDan\u2019s MIX Simulator and MIXAL Compiler,\u201d [Online]. Available: http:\/\/www.recreationalmath.com\/mixal"},{"key":"2021040700302334319_j_acss-2017-0017_ref_011_w2aab2b8c10b1b7b1ab1ac11Aa","unstructured":"[11] \u201cMixEmul,\u201d [Online]. Available: https:\/\/rbergen.home.xs4all.nl\/mixemul.html"},{"key":"2021040700302334319_j_acss-2017-0017_ref_012_w2aab2b8c10b1b7b1ab1ac12Aa","unstructured":"[12] M. Odersky, P. Altherr, V. Cremet, G. Dubochet, B. Emir et al., \u201cScala Language Specification: Version 2.12,\u201d [Online]. Available: http:\/\/www.scala-lang.org\/files\/archive\/spec\/2.12"},{"key":"2021040700302334319_j_acss-2017-0017_ref_013_w2aab2b8c10b1b7b1ab1ac13Aa","unstructured":"[13] JetBrains, \u201cKotlin Language Documentation,\u201d [Online]. Available: http:\/\/www.kotlinlang.org\/docs\/kotlin-docs.pdf"},{"key":"2021040700302334319_j_acss-2017-0017_ref_014_w2aab2b8c10b1b7b1ab1ac14Aa","doi-asserted-by":"crossref","unstructured":"[14] P. J. Guo, \u201cOnline Python Tutor: Embeddable Web-Based Program Visualization for CS Education,\u201d Proceedings of the 44th ACM Technical Symposium on Computer Science Education (SIGCSE\u201913), pp. 579\u2013584, 2013. https:\/\/doi.org\/10.1145\/2445196.2445368","DOI":"10.1145\/2445196.2445368"},{"key":"2021040700302334319_j_acss-2017-0017_ref_015_w2aab2b8c10b1b7b1ab1ac15Aa","unstructured":"[15] T. Lindholm, F. Yellin, G. Bracha, and A. Buckley, The Java virtual machine specification: Java SE 8 edition, 2015 [Online]. Available: https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se8\/jvms8.pdf"},{"key":"2021040700302334319_j_acss-2017-0017_ref_016_w2aab2b8c10b1b7b1ab1ac16Aa","unstructured":"[16] Microsoft, \u201cCommon Language Runtime (CLR),\u201d [Online]. Available: https:\/\/docs.microsoft.com\/en-us\/dotnet\/standard\/clr"},{"key":"2021040700302334319_j_acss-2017-0017_ref_017_w2aab2b8c10b1b7b1ab1ac17Aa","unstructured":"[17] M. Odersky, P. Altherr, V. Cremet, I. Dragos, G. Gubochet et al., \u201cAn Overview of the Scala Programming Language,\u201d Technical Report LAMP-REPORT-2006-001, \u00c9cole Polytechnique F\u00e9d\u00e9rale de Lausanne (EPFL), Lausanne, Switzerland, 20 p., 2006."},{"key":"2021040700302334319_j_acss-2017-0017_ref_018_w2aab2b8c10b1b7b1ab1ac18Aa","unstructured":"[18] M. Odersky and L. Spoon, \u201cScala Collections,\u201d [Online]. Available: http:\/\/docs.scala-lang.org\/overviews\/collections\/introduction.html"},{"key":"2021040700302334319_j_acss-2017-0017_ref_019_w2aab2b8c10b1b7b1ab1ac19Aa","unstructured":"[19] ISO\/IEC 9075-2:2016, \u201cInformation technology \u2013 Database languages \u2013 SQL \u2013 Part 2: Foundation (SQL\/Foundation),\u201d 2016."},{"key":"2021040700302334319_j_acss-2017-0017_ref_020_w2aab2b8c10b1b7b1ab1ac20Aa","unstructured":"[20] R. C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall, 431 p., 2009."},{"key":"2021040700302334319_j_acss-2017-0017_ref_021_w2aab2b8c10b1b7b1ab1ac21Aa","unstructured":"[21] J. Gosling, B. Joy, G. Steele, G. Bracha, and A. Buckley, The Java language specification: Java\u00ae SE 8 edition, 2015 [Online]. Available: https:\/\/docs.oracle.com\/javase\/specs\/jls\/se8\/jls8.pdf"}],"container-title":["Applied Computer Systems"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/content.sciendo.com\/view\/journals\/acss\/22\/1\/article-p47.xml","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/www.sciendo.com\/article\/10.1515\/acss-2017-0017","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2021,4,7]],"date-time":"2021-04-07T03:59:25Z","timestamp":1617767965000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.sciendo.com\/article\/10.1515\/acss-2017-0017"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2017,12,1]]},"references-count":21,"journal-issue":{"issue":"1","published-online":{"date-parts":[[2017,12,27]]},"published-print":{"date-parts":[[2017,12,1]]}},"alternative-id":["10.1515\/acss-2017-0017"],"URL":"https:\/\/doi.org\/10.1515\/acss-2017-0017","relation":{},"ISSN":["2255-8691"],"issn-type":[{"value":"2255-8691","type":"electronic"}],"subject":[],"published":{"date-parts":[[2017,12,1]]}}}