Re: Master Thesis using D Programming language.
On Monday, 24 August 2020 at 19:56:49 UTC, Tariq Siddiqui wrote: Hello everyone, I am looking for a master thesis topic using D Programming language. Earlier I choose Design by Introspection, but I did not find enough material in academic journals. DbI total material which I found is DConf Andrei talk and the similar talk at Google campus, which starts with 50 Deutsche Mark story and ends with explaining PbD, DbI and other Dlang internals. No doubt that Andrei's discussion was great. DbI as a topic is excellent, but as per my university requirements, I was not able to find five articles in the last five years in any academic journal, to start the initial discussion about the research topic. I am still opened with my topic, next week, I have to submit my draft proposal. Till now, I did not meet my dissertation advisor. I am looking for something practical and less theoretical. I have found some thesis done using Rust, you guys as a language expert can these below projects be achievable using D Programming language. http://www.barrelfish.org/publications/ma-foellmic-bfrust.pdf https://www.diva-portal.org/smash/get/diva2:1238890/FULLTEXT01.pdf https://github.com/Gankra/thesis/blob/master/thesis.pdf Regards, Tariq Siddiqui. D for a @safer Linux Kernel was worked on by Alexandru Militaru: https://www.youtube.com/watch?v=weRSwbZtKu0 You can also browse the previous GSoC proposals at https://wiki.dlang.org/GSOC_2019_Ideas and https://wiki.dlang.org/GSOC_2018_Ideas of which some might qualify as masters thesis. These are pretty hands on requiring good understanding of the theory as well. D blog had a similar post recently. https://dlang.org/blog/2020/08/23/symmetry-autumn-of-code-2020-projects-and-participants/ -- Arun
Re: Master Thesis using D Programming language.
On Monday, 24 August 2020 at 19:56:49 UTC, Tariq Siddiqui wrote: Hello everyone, I am looking for a master thesis topic using D Programming language. Earlier I choose Design by Introspection, but I did not find enough material in academic journals. DbI total material which I found is DConf Andrei talk and the similar talk at Google campus, which starts with 50 Deutsche Mark story and ends with explaining PbD, DbI and other Dlang internals. No doubt that Andrei's discussion was great. DbI as a topic is excellent, but as per my university requirements, I was not able to find five articles in the last five years in any academic journal, to start the initial discussion about the research topic. Academic don't know innovation. Only history :) I am still opened with my topic, next week, I have to submit my draft proposal. Till now, I did not meet my dissertation advisor. Metaprogramming as suggested sounds interesting upon second thought. On Wikipedia, only D and C++ seems to have sufficient implementation among mainstream languages. With D's being exceptionally capable. So you might want to do something around that...and how it impacts software development. I am looking for something practical and less theoretical. I have found some thesis done using Rust, you guys as a language expert can these below projects be achievable using D Programming language. Yep. Its does. Metaprogramming really has a very significant benefit in practice. And disign by introspection is one way it can be used.
Re: Master Thesis using D Programming language.
On Tuesday, 25 August 2020 at 16:52:17 UTC, aberba wrote: On Monday, 24 August 2020 at 19:56:49 UTC, Tariq Siddiqui wrote: Academic don't know innovation. Only history :) Academia*
Re: Master Thesis using D Programming language.
On Monday, 24 August 2020 at 19:56:49 UTC, Tariq Siddiqui wrote: Hello everyone, I am looking for a master thesis topic using D Programming language. Earlier I choose Design by Introspection, but I did not find enough material in academic journals. DbI total material which I found is DConf Andrei talk and the similar talk at Google campus, which starts with 50 Deutsche Mark story and ends with explaining PbD, DbI and other Dlang internals. No doubt that Andrei's discussion was great. DbI as a topic is excellent, but as per my university requirements, I was not able to find five articles in the last five years in any academic journal, to start the initial discussion about the research topic. I am still opened with my topic, next week, I have to submit my draft proposal. Till now, I did not meet my dissertation advisor. I am looking for something practical and less theoretical. I have found some thesis done using Rust, you guys as a language expert can these below projects be achievable using D Programming language. http://www.barrelfish.org/publications/ma-foellmic-bfrust.pdf https://www.diva-portal.org/smash/get/diva2:1238890/FULLTEXT01.pdf https://github.com/Gankra/thesis/blob/master/thesis.pdf Regards, Tariq Siddiqui. Well, what would you like to study? Generally, the thesis will be of a topic that is (a) great interest to you and (b) has room for improvement in the field. The theses you listed cover OS development, memory safe kernel programming, and safety generally, respectively. Is this the area you wish to work in? What about other areas, such as concurrency, message passing, high performance, Type Theory, etc.? You mentioned Design by Introspection hard to find material about. What if you broaden this a bit and consider the topic of metaprogramming more generally? Best of luck to you
Re: Master thesis
Maybe changing the application domain could give you a better dissertation axis for your thesis. For instance comparing the architecture and implementation details of the same game server application implemented in languages like C++, Rust, D, Go, Java, etc. As any web-related application, a game server executable MUST be BOTH safe and robust, there is no other choice, it must be able to run for days and weeks without crashing, resisting to low memory conditions, network saturation, connection attacks, etc. Btw that doesn't mean you should not implement the SDL game client with these same languages. I'm just saying that implementing the server side too, with a simple communication protocol allowing for instance the game to submit the player highscores, could give you a broader perpective for the safety and security problems.
Re: Master thesis
Maybe an comparison between different software-products (one in an insecure and one in a secure programming language) to show the difference and potential vulnerabilities. Maybe changing the application domain could give you a better dissertation axis for your thesis. For instance comparing the architecture and implementation details of the same game server application implemented in languages like C++, Rust, D, Go, Java, etc. As any web-related application, a game server executable MUST be BOTH safe and robust, there is no other choice, it must be able to run for days and weeks without crashing, resisting to low memory conditions, network saturation, connection attacks, etc.
Re: Master thesis
On Saturday, 1 July 2017 at 21:00:14 UTC, Ecstatic Coder wrote: Whatever the object oriented language you use, you can keep exactly the same global game architecture, using more or less the same classes for your game subsystems and gameplay elements. Therefore, as an old game industry veteran, I confirm what you already know, which is that it's all about memory allocation, access and deallocation when comparing a game made in C++, D or Rust. I'm not saying that other matters are not important, but many game development directors apply Bertrand Meyer's architectural advices (design by contract with pre/post condition assertions, etc) since the early nineties, so there is not much difference between a C++ game and a D/Rust game in this area. So all that remains in the end are just concurrency and memory-related features, like immutable data, array memory slicing, automatic array bound and null pointer checking, object destruction and deallocation through variable scope and garbage collection, etc. This of course includes interfacing with C/C++, i.e. managing the memory and lifecycle of C/C++ structs/objects from D or Rust. With D, my biggest concern was about avoiding the application thread to freeze during a GC, while C++ and Rust can completely ignore this problem. IMHO just these last points could already explain why Rust and C++ still remain preferred to D for game development... That's a good statement which I found very often recently. Maybe I should change my main focus from architecture to software-engineering per se... Maybe an comparison between different software-products (one in an insecure and one in a secure programming language) to show the difference and potential vulnerabilities.
Re: Master thesis
On Saturday, 1 July 2017 at 08:48:19 UTC, Dgame wrote: Hi there. I hope that is the right place for this topic. I'm currently writing my master thesis and just like in my bachelor thesis, D will play a significant role in my master thesis. My thesis will discuss the impact of software engineering concepts of security-oriented programming languages on software development with a focus on the effects on software design / design patterns and specifically software architecture. As said, D will be one of the few secure programming languages which I will present. Others will be Rust & Ada and on the other side C/C++ will be one example of the many unsecure programming languages. That as a short introduction of the purpose of my master thesis and what I intend to do in the next six months. Currently, I'm collecting links, literature and other stuff on that topic. But I thought that maybe some of you know more about that and can give me hints, links or maybe even real live experience/examples. That would be really kind of you. :) For example: Which impact would have D on the software-architecture, if it would be choosen for a 2D game instead of C/C++? The 2D game is my choosen case example since I programmed small games on gamejams in C/C++ and D, until two years ago. Of course, any architecture regarding that topic is of interest. Have you already made such experience or do you know people who have and maybe even wrote articles about? Many thanks in advance! Whatever the object oriented language you use, you can keep exactly the same global game architecture, using more or less the same classes for your game subsystems and gameplay elements. Therefore, as an old game industry veteran, I confirm what you already know, which is that it's all about memory allocation, access and deallocation when comparing a game made in C++, D or Rust. I'm not saying that other matters are not important, but many game development directors apply Bertrand Meyer's architectural advices (design by contract with pre/post condition assertions, etc) since the early nineties, so there is not much difference between a C++ game and a D/Rust game in this area. So all that remains in the end are just concurrency and memory-related features, like immutable data, array memory slicing, automatic array bound and null pointer checking, object destruction and deallocation through variable scope and garbage collection, etc. This of course includes interfacing with C/C++, i.e. managing the memory and lifecycle of C/C++ structs/objects from D or Rust. With D, my biggest concern was about avoiding the application thread to freeze during a GC, while C++ and Rust can completely ignore this problem. IMHO just these last points could already explain why Rust and C++ still remain preferred to D for game development...
Re: Master thesis
On Saturday, 1 July 2017 at 15:58:04 UTC, ketmar wrote: Dgame wrote: On Saturday, 1 July 2017 at 14:40:36 UTC, ketmar wrote: Dgame wrote: Which impact would have D on the software-architecture, if it would be choosen for a 2D game instead of C/C++? i can actually finish 'em. most of the time when i'm working with D, i feel that compiler tries to help me. EVERY TIME i'm working with C/C++, i know for sure that compiler silently setting traps for me ('cause it is absolutely impossible to write safe and secure C/C++ code Do you have examples (code and/or personal experience) about that? basically, all of my projects. ;-) like zx spectrum emulator, which took monthes in C, and only weeks in D (and it almost on par feature-wise with C version, and even more advanced in some areas like FDC emulation). -- tnx to standard committee and compiler implementers, anything can turn into UB unexpectedly, and writing UB-free code is tedious and it will have UB anyway). Is that described somewhere? Or do you have examples or both? ah, many people are complaining. just recent ones (there are MUCH MORE out there, just follow the links in the articles, for example): http://www.yodaiken.com/2017/06/26/the-c-standard-versus-c-and-the-mother-of-all-hacks/ http://www.yodaiken.com/2017/01/05/undefined-behavior-and-the-purpose-of-c/ everything compiler authors has to say is (see gcc bugzilla link in one of the articles): "it is permitted by the standard. don't write code with UB". that is, modern optimizing C compilers are *actively* trying to *subvert* your code. using modern C compiler ends up in you being punished for all kind of random things: compiler is using *any* your error against you. it probably helps to win some stupid compiler benchmarks, but it is crystal clear that modern C is not made to write real-world programs in it: programmer have to manually track the things, and make machine happy. this is exactly the *opposite* of the machine's purpose: it is machine's task to make human happy, and free human from tedious and error-prone work, not vice versa! ;-) besides those issues, the GREAT advantage of D is well-defined low-level types. `uint` is always 32 bits, `short` is always 16 bits and 2-complement (and it has overflow defined!), and so on. no need to `stdint.h` anymore (and why do we need it in C at all? winning several CPU cycles on the occasion vs hours of fighting to write portable code... OBEY THE MACHINE, YOU WORTHLESS HUMAN! ;-) i dropped C years ago, switched to D, and i will NEVER return. D was made by humans, for humans, not by committee and compiler writers to win useless benchmarks. Amen.
Re: Master thesis
p.s.: as a side note. i planned to write my own email client for *decades*. literally. but never managed to fight my way through C (and let's don't even start to talk about C++!). with D, my dream finally turned into reality: i am using Chiroptera e-mail/nntp client, written by me, from scratch, in D. and i must confess that i prefer to not switch off/reboot my box, so my e-mail client should not crash. now, Chiroptera works for monthes without any crash or (significant ;-) memleak. and i don't have to restart it ocasionally, 'cause it crashed, or eats gigabytes of RAM. ;-)
Re: Master thesis
Dgame wrote: On Saturday, 1 July 2017 at 14:40:36 UTC, ketmar wrote: Dgame wrote: Which impact would have D on the software-architecture, if it would be choosen for a 2D game instead of C/C++? i can actually finish 'em. most of the time when i'm working with D, i feel that compiler tries to help me. EVERY TIME i'm working with C/C++, i know for sure that compiler silently setting traps for me ('cause it is absolutely impossible to write safe and secure C/C++ code Do you have examples (code and/or personal experience) about that? basically, all of my projects. ;-) like zx spectrum emulator, which took monthes in C, and only weeks in D (and it almost on par feature-wise with C version, and even more advanced in some areas like FDC emulation). -- tnx to standard committee and compiler implementers, anything can turn into UB unexpectedly, and writing UB-free code is tedious and it will have UB anyway). Is that described somewhere? Or do you have examples or both? ah, many people are complaining. just recent ones (there are MUCH MORE out there, just follow the links in the articles, for example): http://www.yodaiken.com/2017/06/26/the-c-standard-versus-c-and-the-mother-of-all-hacks/ http://www.yodaiken.com/2017/01/05/undefined-behavior-and-the-purpose-of-c/ everything compiler authors has to say is (see gcc bugzilla link in one of the articles): "it is permitted by the standard. don't write code with UB". that is, modern optimizing C compilers are *actively* trying to *subvert* your code. using modern C compiler ends up in you being punished for all kind of random things: compiler is using *any* your error against you. it probably helps to win some stupid compiler benchmarks, but it is crystal clear that modern C is not made to write real-world programs in it: programmer have to manually track the things, and make machine happy. this is exactly the *opposite* of the machine's purpose: it is machine's task to make human happy, and free human from tedious and error-prone work, not vice versa! ;-) besides those issues, the GREAT advantage of D is well-defined low-level types. `uint` is always 32 bits, `short` is always 16 bits and 2-complement (and it has overflow defined!), and so on. no need to `stdint.h` anymore (and why do we need it in C at all? winning several CPU cycles on the occasion vs hours of fighting to write portable code... OBEY THE MACHINE, YOU WORTHLESS HUMAN! ;-) i dropped C years ago, switched to D, and i will NEVER return. D was made by humans, for humans, not by committee and compiler writers to win useless benchmarks.
Re: Master thesis
On Saturday, 1 July 2017 at 14:40:36 UTC, ketmar wrote: Dgame wrote: Which impact would have D on the software-architecture, if it would be choosen for a 2D game instead of C/C++? i can actually finish 'em. most of the time when i'm working with D, i feel that compiler tries to help me. EVERY TIME i'm working with C/C++, i know for sure that compiler silently setting traps for me ('cause it is absolutely impossible to write safe and secure C/C++ code Do you have examples (code and/or personal experience) about that? -- tnx to standard committee and compiler implementers, anything can turn into UB unexpectedly, and writing UB-free code is tedious and it will have UB anyway). Is that described somewhere? Or do you have examples or both? otherwise, i hate writing articles: writing code is way more fun. ;-) Same here. :D
Re: Master thesis
Dgame wrote: Which impact would have D on the software-architecture, if it would be choosen for a 2D game instead of C/C++? i can actually finish 'em. most of the time when i'm working with D, i feel that compiler tries to help me. EVERY TIME i'm working with C/C++, i know for sure that compiler silently setting traps for me ('cause it is absolutely impossible to write safe and secure C/C++ code -- tnx to standard committee and compiler implementers, anything can turn into UB unexpectedly, and writing UB-free code is tedious and it will have UB anyway). otherwise, i hate writing articles: writing code is way more fun. ;-)
Re: Master thesis
If you haven't watched it yet, Walter's dconf keynote this year is a good place to start as are the discussion on dip1000 and the dip itself. Thanks, that's a good hint, I'll definitely watch it. :) But as Rikki said the fact that all arrays carry they length means that we have array bounds checking, which rules out one class of very common bugs you would get in C. Yes, that's what I call "security oriented software technology concept" or "vulnerability avoiding concept". It's one of the many things D did right and which I want to mention (there are so many!), but it's not a concrete impact on software architecture. That's what I mainly seek. It's not that easy to find concrete impacts IMO. I'm about to hand in my Honours thesis on Monday after doing it for a year, I don't think I could do one in six months, so best of luck! If I could, I would also happily wrote a year or more, since there is so much to write about, but we only have six months for our master thesis.
Re: Master thesis
On Saturday, 1 July 2017 at 08:48:19 UTC, Dgame wrote: Hi there. I hope that is the right place for this topic. I'm currently writing my master thesis and just like in my bachelor thesis, D will play a significant role in my master thesis. My thesis will discuss the impact of software engineering concepts of security-oriented programming languages on software development with a focus on the effects on software design / design patterns and specifically software architecture. As said, D will be one of the few secure programming languages which I will present. Others will be Rust & Ada and on the other side C/C++ will be one example of the many unsecure programming languages. That as a short introduction of the purpose of my master thesis and what I intend to do in the next six months. Currently, I'm collecting links, literature and other stuff on that topic. But I thought that maybe some of you know more about that and can give me hints, links or maybe even real live experience/examples. That would be really kind of you. :) For example: Which impact would have D on the software-architecture, if it would be choosen for a 2D game instead of C/C++? The 2D game is my choosen case example since I programmed small games on gamejams in C/C++ and D, until two years ago. Of course, any architecture regarding that topic is of interest. Have you already made such experience or do you know people who have and maybe even wrote articles about? Many thanks in advance! If you haven't watched it yet, Walter's dconf keynote this year is a good place to start as are the discussion on dip1000 and the dip itself. But as Rikki said the fact that all arrays carry they length means that we have array bounds checking, which rules out one class of very common bugs you would get in C. I'm about to hand in my Honours thesis on Monday after doing it for a year, I don't think I could do one in six months, so best of luck!
Re: Master thesis
Not too helpful but a few points that may interest you: - All dynamic arrays are slices. T[] array = ptr[0 .. length]; - Compute values at CTFE, compare, contrast against e.g. unittests for extra verification