Android Poll.

Should the Pandora switch to Android?

  • Yes

    Votes: 22 9.1%
  • No

    Votes: 220 90.9%

  • Total voters
    242

I don't know about you but I personally find my own code quite easy to port. I've ported an SDL app I made to Javascript, and a VB app I made back in the day to C, and a Haskell app to C++, Scala to Haskell, etc...

I've only got difficulties with porting anything from/to "dynamically typed languages" with (what I would consider to be) flawed type systems, because some "dynamic code" just uses syntax that is too language-specific or to obscure to have anything equivalent in another language. For example: delimited continuations in Python... In other languages, I think continuations are easy to replace by callbacks (or by ordinary continuations if the target language supports them), but Python uses them too unpredictably. Fortunately for me, I don't use dynamically typed languages extensively.

You won't write any esoteric code yourself, and your target language won't be esoteric either, so just stop this childish discussion. If you follow some kind of design principles while programming, it should be easy to port your program to any major programming language, and that's all there is to it.

The issue might instead be that porting takes time, and it might not be worth it for some of you to port your programs into another language, and I can understand that. But don't say that code transcription/translation is difficult or a major obstacle, because it's not.
 
milkshake said:
God Ginrai said:
I was giving a ridiculous case because it was the easiest way to prove your statement false.

I can see that lol, what I mean was once you learn the new syntax it becomes easy because programming still works the same way so just because you might create an array using a different command/funtion doesnt mean how you will use the array will be different, if you know what i mean.

Code:
echo "hello World";

document.write("hello world");

echo hello world

print("hello world");

once you know what you use in each language to accomplish your print to screen or other action it all starts to fit into place.

It's still not that easy. Different languages throw around different ideas which require completely different mindsets to approach coding them. Smalltalk, and object-oriented mindset; Lisp, a functional mindset; and C, a procedural mindset; are just some of the simplest examples. If I were to try and sit down and code something in Lisp, I would have a very hard time doing it, because I would have to learn the right way to think to code lisp. For example, one big difference between C and Java is that in C, you don't have to worry about private variables that you can't look at. In Java, you have to deal with it all the time.

-God Ginrai
 
Last edited by a moderator:
God Ginrai said:
It's still not that easy. Different languages throw around different ideas which require completely different mindsets to approach coding them. Smalltalk, and object-oriented mindset; Lisp, a functional mindset; and C, a procedural mindset; are just some of the simplest examples. If I were to try and sit down and code something in Lisp, I would have a very hard time doing it, because I would have to learn the right way to think to code lisp. For example, one big difference between C and Java is that in C, you don't have to worry about private variables that you can't look at. In Java, you have to deal with it all the time.
-God Ginrai
On that note, there is not a lot moore you can achieve with OOP than you can with fucntional programming apart from maybe reducing your code bloat but that can also be true in reverse if you try to use OOP for a very small script.
 
Last edited by a moderator:
If you use ad-hoc polymorphism and type classes in your code, you keep your code portable, because those are concepts expressible in *every* programming language.

And then about other translations:
  • Functional → Procedural; make procedures that only operate on their arguments and nothing else. Make all variables const.
  • Procedural → Functional; create the equivalent of an IO monad and write in a procedural style in a functional language. Create shallow conversion functions for situations where you would have used pointer casts in the procedural language.
  • Object-oriented → Procedural; for each class in your object oriented program, create a struct (or equivalent). Then, create procedures that take a pointer to this struct as their first argument and behave like your member methods, and use these for member access. Never expose or access the fields of the struct; this can be done in C by having a private header with the struct. Use the GObject method to enable inheritance
  • Procedural → Object-oriented; put all your procedures in one class. Problem solved.
  • Object-oriented → Functional; replace your objects with records and use type class instances to emulate object methods. Replace parts of your code that modifies internal state with mappable functions.
  • Functional → Object-oriented; for lazily evaluated languages, introduce a Function0<R>, Function1<A, R>, Function2<A, B, R> etc class that each have apply methods with parameter lists of different arity. Use those for 'lazy' values or functions. For eagerly evaluated functions, just replace your functions by methods.

Did I miss something? ;)
 
I'm surprised none mentioned Java's JVM yet. Been programming for years using C, C++ and Java and one thing that haunts my dreams is the JVM. That thing is like a black hole sucking up resources. It's not only about syntax ;)

As for the rest, just use your common sense. Choose the language that best suits your needs.
 
I'm not exactly a newbie at programming and I really can't agree that porting software from one language to another is quite so simple. Yes, even with high cohesion and low coupling, proper OO and abstraction, all that jazz. Programming in a language is only 10% syntax, the rest of it is libraries (and even with enough abstraction the design of one library to the next can be so radically different it requires a lot of work to accomodate) and the quirks of how the language works. It's not like memory management in Python = memory management in C++ = memory management in .NET. Same with other stuff like threading. If it was as easy as learning the syntax I'd be fluent in 20 programming languages by now, instead of being fluent in two and decent in another two.

Which isn't to say that it's insurmountable to learn a new language, research the libraries available for that language and if they meet your needs and how they fit into the design of your code, and then port it and also change around your design where necessary to account for the various quirks of the two languages. But uh... that's work? I can't speak for any other devs but I'm doing this in my spare time, for fun, and I have just about zero interest in maintaining two ports of my code for two languages to cater to two OSes, one of which will be in a language I don't care to work with.
 
dflemstr said:
Did I miss something? ;)

Yes, you missed the all-important fact that not everyone can do this as easily as you seem to suggest you can.

-God Ginrai
 
Last edited by a moderator:
dflemstr said:
  • Functional → Procedural; make procedures that only operate on their arguments and nothing else. Make all variables const.
Come now, functional programming is about way more than lacking side effects, I think you know this. I had a course where we converted Scheme programs to C by hand, including call/cc, but it felt more like being a compiler than really porting anything. The results were pretty awful.

dflemstr said:
  • Object-oriented → Procedural; for each class in your object oriented program, create a struct (or equivalent). Then, create procedures that take a pointer to this struct as their first argument and behave like your member methods, and use these for member access. Never expose or access the fields of the struct; this can be done in C by having a private header with the struct. Use the GObject method to enable inheritance
Heh, I've done my fair share of this sort of horrible nonsense... for those who don't know, the standard way to perform "inheritance" in C is to have structs include their inheriting member as the first field, then cast the struct down to the parent to get polymorphism. Doesn't work so automatically at all for virtual inheritance, which is arguably the real meat of OOP.

I had a job once where I mainly coded in C, but actually found myself doing this because for the application at hand an OO approach really made the most sense. That night I came to my senses and the next day I rewrote in C++, removing tons of horrible looking boilerplate. Fortunately I have since yet to feel so compelled to do OOP for anything, so this problem hasn't come up again; I guess it's a perk of doing emulators and embedded.

Here's a quicker explanation for all of those paradigm shifts - do it in assembly yourself instead of letting the compiler do it. That should illustrate about how much you lose by forcing one style on a language not suited for it ;) But all in all, to each their own.. not as a nicety but very much encouraged, because I wholeheartedly believe that programming style is a personal thing that shines best when kept in line with one's true personality. Maybe ran through a de-stupid filter once in a while, of course.
 
Last edited by a moderator:
God Ginrai said:
dflemstr said:
Did I miss something? ;)

Yes, you missed the all-important fact that not everyone can do this as easily as you seem to suggest you can.
Hmm, I guess that the Swedish tongue-in-cheek humor doesn't suit you very well. Or you might not have realized how horrible some of my suggestions were (Using an IO monad for *every* operation? Wow, I'll stock up on replacement keys since my keyboard will wear out. Simulating pointer casting by creating copies of massive amounts of data? Well, might be possible if we gave the Pandora a couple of gigabytes more memory, because that's what it will take for converting frame buffer snapshots of certain sizes to singly-linked lists.)

EDIT: All of the suggestions would actually work of course, but whatever...
Maybe I shouldn't be typing at this time of daynight... Usually results in some kind of up-screwing.
 
Last edited by a moderator:
Honestly where did this Volley of B.S. come from ?

ANDROID is a SMART PHONE PLATFORM

Where does this fit into the concept that is MID / Micro-Laptop (the Pandora).

AFAIK ANDROID as an OS does LESS than our default Angstrom OS.

And if I really REALLY want to run some awful shovel-ware ANDROID App. I'll get the Dolvik VM and all the support libs (or wrappers) and see if that works.

I can't imagine there are better apps for ANDROID than ANY modern Desktop Linux distro.

Prove me wrong.
 
No no, you don't get it! Think of all the AAA commercial games we would attract! Like uhh... and ummm... and ahhh... oh and how they would all be made for phones so they wouldn't use any of the Pandora's controls besides the touchscreen and then we could beg them to add support for our niche device's odd hardware features cause the developers of those AAA commercial games are noted for spending time and money adding feature requests for tiny amounts of people!

Can't you see it now? I can! But I may have taken a pill or two and can also currently taste the music I'm listening too. Tastes kinda like purple.
 
Broken1334 said:
143 vs. 12... :lol:
155/4000 heh... not to mention those still on the fence

out of all the polls I see on here, I've only seen a maximum of ~250 people voting, I'm pretty sure the ones that voted are the hard core dedicated/addicted pandora fan boys (I am one as well)

but of our little uber geek niche, there's a good portion that doesn't even come on these boards (or at least not daily) and these are the first batchers mainly....

your less hardcore user probably isn't up linux's butt as much as the hardcore pandora fanboys are... your more common end user will probably want user friendly and mainstream over sqeezing every ounce of performance and ultimate customization.

my opinion only.
 
Last edited by a moderator:
Series-8 said:
Prove me wrong.
easy enough :
Series-8 said:
ANDROID is a SMART PHONE PLATFORM
Android is ultimatly an ads plateform. But it will run in your next MID, in your next TV (google TV use android) for sure. I can bring in some links too, but I'm lazy. Ho, android will become the prefered plaform for _many_ gadgets to come (think mp3 player, UMPC, cars, even fridge in the long run :p )

With our current plateform, porting from wiz/gp32x just require adding a scaler (we have 2x the screen size) and change a little bit the control. for most code and coders around here that mean about 2 hours of works (beside setting up the dev environment, sure).
Porting 2d linux games is done by just fixing the control.
(sure these ports will requiere some love after that, but any release will do anyway)

With Android, the work required to produces these ports will be far greater. Even the base libraries are differents (not the same libc etc). Don't even think to port a desktop application I tend to package, as these will basically require a full rewrite.

Packaging job will be more teddious as android don't provide what any coder around here consider to be pretty standard (SDL, gtk etc) so anyone providing these apk will need to pack all the dependencies. This mean bigger packages too.

Android don't provide an X server, that does mean _no_ linux desktop application whatever you thing (the last users of the framebuffer backend for GTK have give up because it was damn too broken)

These are the real reason why the dev don't want to use android.

Now to those that does think that android is bloated, think that it run flawlessly on hardware less powerfull than the pandora... (Ok having a tool to kill background process on a very lightweight OS on the first week of the release does show some of the performance expectation some of us have)

To those that think that google is EVilzzz, I seen many more company that are way more evil (as don't sponsor GSOC, as using BSD code to be sure to not have to give back etc etc...). All this company is trying to do with it's android plateform is to get money without having you to pay anything while using the product. Sure that's evil...

And then we have the community splitting therories. Most of them are true : we don't have the man power to produce maintain 2 OS.


As a side hack, I do expect to see it somedays.
As main OS (or even side supported OS) no thanks.

EDIT :
jb0yx said:
but of our little uber geek niche, there's a good portion that doesn't even come on these boards (or at least not daily) and these are the first batchers mainly....
IMHO, these have just missed the point of the pandora completely.

jb0yx said:
your less hardcore user probably isn't up linux's butt as much as the hardcore pandora fanboys are... your more common end user will probably want user friendly and mainstream over sqeezing every ounce of performance and ultimate customization.
You don't have a pandora yet, do you ?
Or you'ld know how user-friendly it is.
I've yet to hack on my pandora : everything worked nicely (I just followed someguy's guides to pimp-up my pandora).
I want it to stay very standard and I'm happy with it. (I mind you, i've my geek card, but my wife which is not computer litterate at _all_ have less problem using it than her ubuntu)

cheers
 
Last edited by a moderator:
I think it would be quite reasonable for OpenPandora to sell Android loaded machines alongside what we currently have. The people buying those would be people who want Android, so it wouldn't split the community. Those customers would not be interested in the Angstrom variant, as they have chosen to purchase an Android machine. It is unreasonable to force customers who would prefer Android to use Angstrom.

An Android variant would bring in different customers that wouldn't otherwise exist. Not much point right now, as supply cannot meet demand... and the current demand is for Linux, presumably, as people have been happy to pay for that.

Ed, Notaz, DaveC, Skeezix and other devs have stated they are commited to the existing firmware. Craig will need to find other developers if he wishes to pursue an Android port. If Craig wishes to spend his money on this, then it isn't our place to judge him for this. All of us in the first batch got our machines for less than the unit price (including development costs). We should respect any efforts made to claw back the investment the team have put into this project, so long as it doesn't remove features first batchers have paid for. Selling Android units alongside Angstrom ones would not take away from what we already have.
 
sebt3 said:
Android is ultimatly an ads plateform.
Mmmmm..... Approved content....

But it will run in your next MID, in your next TV (google TV use android) for sure. I can bring in some links too, but I'm lazy. Ho, android will become the prefered plaform for _mny_ gadgets to come (think mp3 player, UMPC, cars, even fridge in the long run :p )
emphasis mine
Do any Android car-puters exist yet? I haven't been able to find any.
 
Last edited by a moderator:
Oh, I almost forgot to mention how much I hate forum polls.

They're a ridiculous, wildly inaccurate, nuisance, and the results show more selection bias than they do data.

There. I'm good until the next poll.
 
VRAndy said:
Do any Android car-puters exist yet? I haven't been able to find any.
Not outside the modder communities... yet. If ford can think MS can provide good content for it's cars, I'm sure many other will find android as a compeling plateform. And if that don't happen, then google will work on it anyway (see google TV...)
 
Last edited by a moderator:
Back
Top