TY - JOUR AU - Nagy, Gergely Attila AU - Oláh, Gábor AU - Porkoláb, Zoltán TI - Type Inference of Simple Recursive Functions in Scala JF - ACTA CYBERNETICA J2 - ACTA CYBERN-SZEGED VL - 25 PY - 2022 IS - 4 SP - 797 EP - 815 PG - 19 SN - 0324-721X DO - 10.14232/actacyb.282762 UR - https://m2.mtmt.hu/api/publication/31813117 ID - 31813117 LA - English DB - MTMT ER - TY - THES AU - Nagy, Gergely Attila TI - Elements of multiparadigm programming in Scala PB - Eötvös Loránd Tudományegyetem (ELTE) PY - 2021 SP - 126 DO - 10.15476/ELTE.2020.143 UR - https://m2.mtmt.hu/api/publication/32475721 ID - 32475721 LA - English DB - MTMT ER - TY - ART AU - Nagy, Gergely Attila TI - Scala compiler optimization PY - 2019 UR - https://m2.mtmt.hu/api/publication/31064451 ID - 31064451 N1 - https://github.com/njeasus/scala-comp-optimization DB - MTMT ER - TY - ART AU - Nagy, Gergely Attila TI - Scala recursive function typer PY - 2019 UR - https://m2.mtmt.hu/api/publication/31064403 ID - 31064403 N1 - https://github.com/njeasus/ScalaRecTyper DB - MTMT ER - TY - ART AU - Nagy, Gergely Attila TI - Scala call graph analyzer PY - 2019 UR - https://m2.mtmt.hu/api/publication/31064391 ID - 31064391 N1 - https://github.com/njeasus/ScalaCallGraph DB - MTMT ER - TY - CHAP AU - Nagy, Gergely Attila ED - Marko, Koricic ED - Zeljko, Butkovic ED - Karolj, Skala ED - Zeljka, Car ED - Marina, Cicin-Sain ED - Snjezana, Babic ED - Vlado, Sruk ED - Dejan, Skvorc ED - Slobodan, Ribaric ED - Stjepan, Gros ED - Boris, Vrdoljak ED - Mladen, Mauher ED - Edvard, Tijan ED - Predrag, Pale ED - Darko, Huljenic ED - Tihana, Galinac Grbac ED - Matej, Janjic TI - Comparing Software Complexity of Monadic Error Handling and Using Exceptions T2 - 2019 42nd International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO) PB - Croatian Society for Information and Communication Technology Electronics and Microelectronics (MIPRO) CY - Rijeka SN - 9781538692967 PY - 2019 SP - 1575 EP - 1580 PG - 6 DO - 10.23919/MIPRO.2019.8757213 UR - https://m2.mtmt.hu/api/publication/31046000 ID - 31046000 AB - Exception handling has been the definitive way to handle errors of any kind and exceptional circumstances in modern software. Using exceptions ease comprehension of single-threaded software by reducing complexity, but concurrency and asynchronous programming models require other approaches as the stack at the state of an error may not hold semantically important information. A way to handle such cases has been introduced to standard libraries, for example in Scala, the Try and - to some extent - Option constructs help programmers. Since these display monadic behavior, they provide improved composability compared to exception-based methods.Measuring software complexity can be done using software metrics. There are several well-known definitions: lines of code, cyclomatic complexity or McCabe-metrics, Halstead complexity measures and A-V.In this paper, we use definitions of widely-known metrics that have been extended for the case of exception handling and compare complexity of monadic error handling with standard exception handling techniques. LA - English DB - MTMT ER - TY - CHAP AU - Oláh, Gábor AU - Nagy, Gergely Attila AU - Porkoláb, Zoltán ED - Zsók, Viktória ED - Porkoláb, Zoltán ED - Horváth, Zoltán TI - Analyzing Scale-Free Properties in Erlang and Scala T2 - Central European Functional Programming School PB - Springer Netherlands CY - Cham SN - 9783030283469 T3 - Lecture Notes in Computer Science, ISSN 0302-9743 ; 10094. PY - 2019 SP - 380 EP - 393 PG - 14 DO - 10.1007/978-3-030-28346-9_10 UR - https://m2.mtmt.hu/api/publication/30970214 ID - 30970214 AB - The optimal modularization and the right level of coupling between components are important for the overall quality of software systems. Although the generic suggestion is to minimize the coupling between modules, earlier research on object-oriented programming showed that there is a natural limit to eliminating dependencies between classes. In our research we extend these findings for non-OOP systems and show that this limitation seems to be paradigm-independent. For this purpose we define paradigm-agnostic metrics for coupling and evaluate them. Our results, measuring Scala and Erlang sources, prove that the coupling behavior shows scale-free properties. Our contribution could be useful to avoid unnecessary or harmful code refactors to chase overall low coupling in systems. LA - English DB - MTMT ER - TY - CHAP AU - Nagy, Gergely Attila AU - Mészáros, Áron Attila AU - Bozó, István AU - Tóth, Melinda TI - Tools supporting green computing in Erlang T2 - Proceedings of the 18th ACM SIGPLAN International Workshop on Erlang - Erlang 2019 PB - ACM Press CY - New York, New York SN - 9781450368100 PY - 2019 SP - 30 EP - 35 PG - 6 DO - 10.1145/3331542.3342570 UR - https://m2.mtmt.hu/api/publication/30773500 ID - 30773500 N1 - 3in(EFOP-3.6.2-16-2017-00013) Támogató: EFOP Innovatív Informatikai és Infokommunikációs Megoldásokat Megalapozó Tematikus Kutatási Együttműködések Tématerületi Kiválósági Program 2019 (ED_18-1-2019-0030) LA - English DB - MTMT ER - TY - CHAP AU - Nagy, Gergely Attila AU - Porkoláb, Zoltán ED - Budimac, Zoran TI - Read-Copy-Update as a Possible Locking Strategy in Scala T2 - Proceedings of the Seventh Workshop on Software Quality Analysis, Monitoring, Improvement, and Applications, SQAMIA 2018 PB - University of Novi Sad CY - Novi Sad T3 - CEUR Workshop Proceedings, ISSN 1613-0073 ; 2217. PY - 2018 SP - 1 EP - 8 PG - 8 UR - https://m2.mtmt.hu/api/publication/30970372 ID - 30970372 AB - Concurrent programming with classical mutex/lock techniques does not scale well when reads are way more frequent than writes. In such situations the read-copy-update (RCU) locking pattern guarantees minimal overhead for read operations and allows them to occur concurrently with write operations thus may outperform classical mutexes or reader-writer locks. RCU is well-known technique among C programmers implementing performance critical low level multithreaded applications, like operating system kernels. Up to now, RCU pattern was rarely applied for high level programming languages. In this paper, we argue in favor of applying RCU for higher level object-oriented constructions and present our experimental Scala RCU class library. The library has been carefully designed to optimize performance in a heavily multithreaded environment, in the same time providing high-level abstractions, applicable in the multiparadigm environment where Scala programming language is typically utilized. We evaluated our library implementing a concurrent HashMap container. LA - English DB - MTMT ER - TY - CHAP AU - Nagy, Gergely Attila AU - Porkoláb, Zoltán ED - Kusper, Gábor ED - Kovásznai, Gergely ED - Kunkli, Roland Imre ED - Király, Sándor ED - Tómács, Tibor TI - Performance Issues with Implicit Resolution in Scala T2 - Proceedings of the 10th International Conference on Applied Informatics PB - Eszterházy Károly Egyetem CY - Eger SN - 9786155621727 PY - 2018 SP - 211 EP - 223 PG - 13 DO - 10.14794/ICAI.10.2017.211 UR - https://m2.mtmt.hu/api/publication/30380175 ID - 30380175 AB - Scala is an emerging programming language that supports multiple programming paradigms. It has been designed to support high levels of expressiveness and to allow writing concise code. To achieve this, it supports many features, including but not limited to macros, DSLs as well as implicit type conversions and implicit argument lists to functions. Due to the wide range of language features and the advanced static type system, the Scala compiler possesses a non-trivial implementation. We have analyzed the performance characteristics of the compiler and have found that the major part of compilation time is spent on typing syntax trees. This includes implicit resolution, thus we have focused our efforts on investigating this specific language feature. We have analyzed how typical usage patterns that involve implicit resolution affect compilation times. Based on this analysis we have managed to assemble a list of recommendations for programming style and code management that allow programmers to leverage implicits to their full potential, but lead to drastically reduced compilation times LA - English DB - MTMT ER -