Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 2 years ago.
Improve this question
This isn't a platform specific question - rather I'm interested in the general platform independent areas of computer science that are particularly relevant to mobile applications development.
For example, things like compression techniques, distributed synchronisation algorithims etc.. what theoretical concepts have you found relevant, useful or enabling when building mobile apps?
Human-computer interaction is an important consideration, when you consider that mobile devices have all sorts of inputs that a "normal" computer would not - such as touch screens (with multi-touch), one or more microphones, camera(s), etc...
Taken from embedded software development is the habit to handle scarce resources such as CPU load and battery life.
My 2 cents: Augmented reality, NFC (RFID)
process calculi
I don't understand why "All of computer science" isn't relevant.
(even things large large scale computing is relevant: you can't have
a small device in your hands that does really complicated stuff
on large scale unless there's a big engine someplace else).
Derecursivation (turning recursive code into an iterative loop) came handy once because some systems try to limit the default available stack size.
Pagination (how the OS splits heap memory into "page" units) is useful to understand when deciding the size of temporary buffers.
The notion of context: context-awareness and/or context-orientation
And also mobile ad-hoc network
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I have the task to write some crypto stuff in C and make it lightweight. The idea behind making it lightweight is, that it could run on a smartcard which doesn't offer much computational power and memory. It won't come to actually running it on a smartcard and it won't be for any practical use.
However, I'm curious if I could run the program on a smartcard without major adjustments. I'm aware that I'd probably have to change something in the IO-part but let's keep that aside. And by "smartcard" I mean a regular smartcard which could be afforded by the majority of private individuals and not some fancy stuff.
To restrict the question a little more:
Could I run the program without modification if I only use 8-bit integers in my program and the architecture is >= 8-bit, aswell as stay below the memory limit?
If no, why not?
Due to their limited CPU power, SCs mostly have their own security/encryption hardware and OS. The latter for instance controls access to critical features like the interface and key storage. Also, some of them have countermeasures against typical attack scenarios like differential cryptoanalysis, etc.
There are standards available, but which to pick depends on the actual card used. There are various SCs on the market with different capabilities and demands.
It is unlikely that your program will run without major modifications.
Note that the specs are mostly only available under NDA and possibly with additional guarantees from your side. The actual level depends on the capabilities and the card vendor.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I was reading an article earlier that suggests 1/3 of us are scared their job will be taken over by robots at some point. At first I was thinking (as robots have to be programmed as well) that we, as programmers, would be safe from this. That brought me to this question.
Would artificial intelligence be capable of performing (advanced) programming tasks or would they always be limited to the level they where programmed at?
What I mean by level is, for example, a scripting language as opposed to a programming language. (Would it be even possible for a scripting language to write and compile software in a programming language?)
This topic was put on hold because the answers would be based on opinions rather than facts. Just for clarity, I am expecting answers that are based on facts. An answer that simply says yes or no would be an opinion based answer, an answer that explains why is based on facts.
Okay, first of all, since you are dealing with the development of programs, it would be better suited to consider this a question based on Artificial Intelligence, rather than Robotics. It's much more simpler to develop programs to write other programs instead of developing a physical entity to type out a program.
AI has developed to such an extent, that simple games can be played much better than what normal humans can do: Wikipedia: Progress in AI.
As of now, development of complex programs is still out of the reach of AI, though it's not far off. Still, for the most part, AI may be used to assist human developers - since it's still not fully developed - rather than replace them altogether.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
Hej,
I recently read a lot of papers from Lamport, Fischer, Lynch, Brewer to get a feeling for their perspective of distributed systems.
I was wondering, what are current open distributed computing research questions/topics? Many areas from databases, communication, fault-tolerance, number crunching, etc. seem to be tackled and in quite solid hands.
What do you think are new areas, maybe someone did think of in the past but rendered it impossible and now it becomes possible? A topic like graph algorithms/databases/analysis?
I would also appreciate if anyone can give a some hints of must-read papers about distributed systems. They can also be a more "sci-fi" to just stay inspired.
Something I have had a big interest in is the potential for using cloud computing / distributed systems to run 3D software, such as you could set up essentially a virtual production studio "in the cloud", as it stands now the cloud providers offer only very basic rudimentary graphics support as their hardware is not equipped with anything approaching high end graphics cards..
I think in the future this type of platform could be also used for online games and things of that nature, such as to take away the need for local computing power, with the increase in broadband speeds (some places in the U.S. now have access to fiberoptic lines with 50+ MB per second) this is becoming an increasing possibility in the near future.
I don't play computer games myself and just used to do some 3D design / animation work but I look at it more from a business perspective and think that this has a lot of potential as, for example, someone with just a basic notebook laptop could eventually be able to use a remote connection to a distributed computing network to play a CPU intensive game (likely through a subscription based set up as this obviously would be taxing on the company providing such a game service as they would be providing all the computing power).
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I wanna implement a very, very simple filesystem. I just came across the following resource
and I am wondering if maybe someone tried to do the same and could point me out where
it is best to start for me.
Many thanks
http://web.archive.org/web/20091027130707/http://geocities.com/ravikiran_uvs/articles/rkfs.html
You could look at FUSE - Filesystem in Userspace. It is a system that makes filesystem development much easier than normal filesystem development inside the Kernel. For example the hellofs is a small, extremely limited filesystem in less than 100 lines of C code.
I designed a small series of homeworks for students to development an really simple filesystem using FUSE. Unfortunatelly, the resources for the course are currently only available in German. The filesystem used is based on the book "UNIX Filesystems" by Steve Pate - A pretty good resource on filesystem development.
Try and look at some of the first, non-journaling filesystems on Minix or Linux. You should be able to find something to look at by browsing their legacy code.
Also pick up a book like Modern Operating Systems by Tanenbaum. This contains some low-level theory. If you want to write the driver for Linux then there is a free book on writing drivers/fs modules for Linux
Good Luck
FAT (specifically FAT16) is an extremely simple filesystem -- so simple in fact that building a FAT16 filesystem driver was a single programming lab assignment for a 200-level Computer Science course when I was in school.
If you want to get an idea of the minimum complexity necessary for a real-world filesystem, that's a decent one to look at.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 3 years ago.
Improve this question
I'd like to use a virtual machine like NekoVM into a small device but to build it, it requires Boehm GC, however there is no port of that GC to that small device so I was wondering if there is any alternative to it, something that could be done exclusively with C code?
I'd say your best option would be to port the GC to your platform, for which there are instructions (libgc porting instructions).
Additionally, it should be possible to swap out the GC implementation (NekoVM FAQ), see vm/alloc.c file.
EDIT:
Hopefully useful additional links: (untested)
Smieciuch Garbage Collector
libgcroots (based on libgc 7, abstracts architecture dependant bits)
Squirrel programming language
Perhaps you'd be better off with Lua, which has a very small but powerful virtual machine, has its own garbage collector built in, and runs on any platform that supports ANSI Standard C. With just a little effort you can even build Lua on a machine that lacks standard input and standard output. I have seen Lua running on an embedded device that was a small LCD touch screen with an embedded CPU stuck on the back. Neko is good work, but I think you'll find Lua every bit as satisfying.
I could suggest TinyGC (tinygc.sf.net) - an independent lightweight implementation of the BoehmGC targeting small devices. It is fully API-compatible (even more, binary compatible) with BoehmGC v7+ but only a small subset of the API is implemented (but sufficient for Java/GCJ-like memory management) and there is no automatic threads and static data roots registration. The latter, however, may require some efforts to make NekoVM work with it (i.e., call GC_register_my_thread() and GC_add_roots()).