Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Sum01 Final Exam Review: Language Differences
dealing with device drivers. C++ shares C's capability of manipulating system level stuff?
2) Java or C++?
Java has nice web integration.
But this also needs to be fast, and C++ just beats Java for that.
this has to be embedded in a device. Everyone talks about
toasters that run Java, but I think C++ is better.
This is rapid prototyping of program that needs a good UI and
abiliy to manipulate many media types.
The client must be available for a variety of OSes.
- david raines and Hitendra
1) How about the code for managing device drivers, as opposed to the device drivers themselves? Don't be fooled by the presence of the words "device drivers".
2) It has to be fast enough, but is speed going to be the biggest difficulty? What are the biggest difficulties here? Think about GT's current web-based registartion server – what about it do the designers seem to have the most difficulty with?
3) Again, why? If you were to objectively pick the best language, what would it be? This is a class – there is time to sit back and ruminate on questions instead of just going with a heuristic. By the way, you can indeed embed any language you name.
4) Okay. What other issues might be involved, as well?
5) C++, Java, Smalltalk, and pretty much any other language will be available on any system with a web browser. So, cross-platform isn't a good requirement here.
1. Squeak has some nice ways for managing stuff (Collections)
2. Nice, fast, able to handle big load, fast access to database and stable.
1. C++, because you need the rawest access to the system that you can get for auto-detection. Nothing that runs inside a VM would work, beacuse you have to work with actual system devices that aren't present within the VM.
2. PHP or Java. You need sessions so the browser can keep the current user in memory, tight database integration, and template-based code generation. PHP isn't completely object-oriented, but for a project like this I don't think that completely OO is the best way to approach the problem.
3. C++, for the pure raw speed of it. You NEED something that gets compiled to machine code, because this is going to run on the cheapest processor that can get the job done. A VM would just add unnecessary overhead.
4. Squeak or (gasp) Visual Basic...or perhaps Delphi...basically you want a rapid prototyping language so you can lay everything out in different ways without much work. Drag & drop programming interfaces work GREAT here.
5. Java, no question. Look at the installed user base for Java plugins versus any other language. If you want people to be able to use your site, go with the leader.
So for 3 why does it have to me C? There are other languages that have compilers that will compile to machine code. C does not have a monopoly on this feature. -Russell
Everyone is overlooking in 1 that it's not the drivers you are writing, but a driver manager. The drivers would need access to system stuff to work. Are you going to need access to system stuff just to load a driver and say "check if the hardware is there"?
There are some interesting ideas floating around for #2, but I'm not seeing any real convincing arguments. Thinking about GT's registration system ought to help in understanding the issues....
On (3), be careful of the generic word "overhead". I assume you mean time overhead, which is correct. For all but the tiniest programs, however, VM solutions tend to take less memory. Then again, there's a specific reason that memory usage by an MPEG decoder isn't very important....
For all of these questions, it is helpful to spell out what the biggest problem you think will be in developing the software. Don't just find one problem with the program in question – try to find a BIG problem, where a language choice will really be able to save you (or cost you, if you choose poorly.)
1. C/C++ would be good for detecting which devices are in a system. If this was a program running(in userland) on a unix machine, you could problaby even write it in Java since reading/writing from a device node is identical to reading/writing from sockets.
2.) You could use Java servlets or JSP. With servlets you can share objects would keep overhead down. Another nice feature is that your remotely query any database with JDBC.
3.) C++ would be nice for an mpeg decoder since you might want to implement more functionality without breaking the original system in the future. Writing this in C would make this difficult.
4.) You could use a RAD tool to make the UI, so long as the RAD produced code in a language that could access the movie editing libraries. An example could be C/C++/Delphi(I think)
5.) Java would be great for this since RMI could connecting and sharing data between clients easily. Java is also supported on many platforms since this game will running from a web browser.
#1: the drivers are already written. What language do you want to write the device-driver manager in?
- 2: Is servlets or JSP a reason to write it in Java? How about Zope for Python? How about FCGI, available in several languages? "Yes" is a fine answer, but say why.
- 3: For feature changes, C++ is better than C but worse than just about any other OO language. C++ is highly tuned towards speed, at the cost of development overhead. If you want to argue based on ease of feature changes, C++ isn't the best choice. It's quite good at handling change, but then again all OO languages are.
- 4: You could also write it in assembler. Do you think that a GUI builder is a good approach? Go ahead and say it.
- 5: So, are you claiming that RMI is only or principally available in Java? Also, notice that running from a web browser on any platform is tougher than running apps on arbitrary platforms....
Two comments overall.
First, this question is about writing the program with the least effort and time, not with getting it to work at all. Getting it to work at all is more important, but this problem is about the next step of doing it withlow effort. State your answers in terms of one solution working particularly well, not in terms of one solution working at all.
Second, most of you need to state your reasons better. Pick a problem that you think will be very important with the program in question, name the problem, and name a language that you think will help with that problem. There are multiple answers for all of these, and in this class you'll get graded on your argument, not your answer.
Skill with this kind of debate is a generally useful outside of class. It won't always work to toss out nice-sounding phrases and to speak very confidently. A fellow technician who really cares about the problem, will often see right through it. -Lex Spoon
Link to this Page