 |
What's so bad about making it easier to learn Java?
Posted by kathysierra on January 19, 2004 at 12:55 PM | Comments (26)
I was talking with author Dori Smith recently, and it turns out we both experienced a similar phenomenon: angry email and online posts about how we were making it too easy to learn Java. But is that really such a terrible thing? I know there's a lot of on- and off-line grumbling about whether it's a good idea to "teach the unteachable" or try to encourage "people who have no business programming in the first place."
Yes, this is an old debate (I like what Simon Phipps had to say after JavaOne), but my being on the receiving end of some of the anger is still kind of new to me, so I'd like to hear more about what's driving this mini-backlash against the new wave of books and developer tools intended to bring the not-quite-C++-gurus into the Java fold.
Is this in fact "dumbing down" and de-valuing the Java language and/or de-valuing Java programmers? Should we (Dori and I, and all other folks who try to teach Java to others or who build tools like Project RAVE) deliberately impose artificial barriers to entry to help guarantee that only the best and brightest can ever write Java code?
Is it really true, as some claim, that managers everywhere are going to snap up these one-step-beyond-supersizing-it programmers and toss out all the ones with real knowledge and skills? Is it true that if one needs a gentle introduction (or at least a different *kind* of introduction) to, say, the world of OO development, that it means he has no hope of ever becoming good at it?
Is there no way a Java developer can be any good without a CS degree? (Although there's always a certain amount of snobbery on both sides -- the CS grads (who may not have had real world experience) vs. the hard-core real-world vet who doesn't need no stinkin' degree.) Is there only one True Path by which a human can become a good Java programmer? And if there is, WHO decided what that path was supposed to look like? Is it possible that the path looks like that simply because... well, simply because it always HAS looked like that?
I might be kidding myself, but I like to think that *anyone* who is capable of learning to do this, and has the passion and interest in working at it and growing and improving, deserves the chance. Just because someone needs (or maybe just WANTS) an easier, brain-friendlier way to get started doesn't automatically mean that person is an idiot/dummy. And it doesn't mean that this person is doomed to write terrible code for life, bring large-scale projects to their knees, and signal the final dealth blow to the careers of seasoned developers.
OK, it sounds like I'm being melodramatic, but these are almost verbatim statements I've heard. But the weirdest thing for me is that some of the more vocal complainers I've heard from act as though they themselves were *born* with their knowledge and skills. But once upon a time, they too were absolute beginners. Everyone has to start somewhere.
Roger Schank, one of my favorite AI professors (founder of the Cognitive Science Society, former director of the Yale Artificial Intelligence Project), claims that the whole approach to teaching (and especially technical subjects) in higher ed in the US is almost completely contrary to everything we know about how the brain works. He claims (and the learning theories certainly seem to back this up) that students learn *in spite of* the ways in which complex subjects are taught in school, rather than *because of*. So, why do these methods still persist in universities? He believes there is a certain amount of, "Well, *I* had to suffer through it like that, and by god, SO WILL MY STUDENTS." And the whole thing just propogates forever, including extending into corporate training.
I guess I'm really bringing in multiple arguments here, so I'll try to summarize the main questions I have:
* Is it wrong to make it easy for those without a formal CS background or years of programming experience to learn Java and/or OO?
* Is it wrong to make learning a complex (and serious) technical topic *fun*? Does it degrade the topic? Does it degrade/insult those who worked hard to become expert at that topic?
* Now that just about all C/C++ programmers already know Java, who are these next 7 million going to be?
* Assuming there *is* at least *some* danger (and I believe there is) that some will come in to programming jobs lacking the understanding and appreciation we know they need, is there something we can do?
* In other words, rather than complaining that these next 7 million are going to be our downfall, can we take steps to help the new folks learn and appreciate more of the art and craft of OO development?
These new folks are going to need not just some "how-to" skills, but also "what-to" and "why-to" and "when-to" understanding. I'm not buying the whole sky-is-falling idea, but still, the concerns aren't completely without a basis. So, what can we do to help?
Bookmark blog post: del.icio.us Digg DZone Furl Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
-
Make it easier, or perish
While I appreciate the concerns of those who say that to make Java easier is to spell the demise of the language, I say the opposite. Java must become easier, or it will slowly perish.
Microsoft has already mounted an assault on Java's stronghold of server-side and web development with it's .NET platform. Java, with its rich and complex set of APIs and the corresponding steep learning curve may appeal to the elitist wizards. But if the decision makers perceive (regardless of whether this perception is correct or not) that it is easier and quicker to develop in .NET (or another platform or language), Java will become a hard sell.
Fewer and fewer new projects will be implemented in Java, 'till eventually we find these skills that we spent years cultivating are not so high in demand any longer.
So, welcome new developers into the fold, even if you are weary that they are not the "real developer" that you have become. Mentor them, so as to lead them away from the sort of silly blunders you dread they will make (and the very sort you yourself likely made back when you were a novice). Help them mold themselves into a skilled professional, while your skills also expand along the way. Your new apprentices will not threaten your profession, but instead help assure the continued viability of Java.
Posted by: jimothy on January 19, 2004 at 01:48 PM
-
Java is weak for Web UI
I did not try Rave yet but so far it looks like the competition has gained some lead in the ease-of-use (and lower costs) of web gui development, although in a limited environment set, limited to .NET.
Lower dev costs for small apps on limited environments is not the only important issue *about making it easy to learn Java*. For advanced developers, the main issue is the lack of tools for concurrent threads. JSR 166 in Java 1.4 will help greatly but what we need is a graphical tool for JSR 166, one which will probably need to be completely different from current tools. I don't see one coming. Maybe I'll have to complete the tool that I started way back in 1991. I am considering it but there are only 24 hours in a day.
Posted by: sm1 on January 19, 2004 at 03:34 PM
-
Java is weak for Web UI
I meant *JSR 166 in Java 1.5* not 1.4.
Posted by: sm1 on January 19, 2004 at 03:39 PM
-
Nothing (is so bad about making ...)
My answers to some of the questions, albeit in a different order:
* Is it wrong to make learning a complex (and serious) technical topic *fun*? Does it degrade the topic? Does it degrade/insult those who worked hard to become expert at that topic?
No! No! Learning should always be fun. BTW, "Head-First" isn't special wrt fun, but only wrt visual appearance, IMHO. Ever read a book on perl? Or about "Pragmatic Programmers"? Or from "Uncle Bob"?
Also, it should be clear that you can - and often should - take a different approach to teach or learn a topic once it has matured. While you want to keep the spirit of enterprise and curiosity, you can get rid of some stupid obstacles the early adopters had to face and overcome.
E.g. many modern C++ tutorial books don't try to teach C first, C++ second any more. And while some people react to that with "oh no, let them suffer like we did", many good C++ programmers who had to learn the hard way derive great pleasure from finding better ways to teach it now.
The only problem I can possibly conceive with "Head First" is that learning programming language must involve reading a lot of good code as well as writing a lot of code. I'm not sure if the "visual" concept of "Head First" allows to provide enough samples for the former and to encourage doing the latter forcefully enough, but I do hope so.
* Is it wrong to make it easy for those without a formal CS background or years of programming experience to learn Java and/or OO?
No! It is wrong to make the impression that they can make up for lack of either by simply reading that book. After reading the book, they will have learned some Java and OO, but they won't be professional programmers - unless they already were those before. So what?
* Assuming there *is* at least *some* danger (and I believe there is) that some will come in to programming jobs lacking the understanding and appreciation we know they need, is there something we can do?
* In other words, rather than complaining that these next 7 million are going to be our downfall, can we take steps to help the new folks learn and appreciate more of the art and craft of OO development?
Show them great code, mentor them, reel them in with pair programming ...
This doesn't have to be kindergarten, or one way only. Sometimes people know something you don't, so they can teach you that, while you teach them this ...
This is what we experience when writing scientific/technical software in C++: You come to work with FORTRAN or C programmers, who have to learn C++, but know a lot about the problems, solutions, data structures and algorithms of the application domain. With a good C++ programmer, mutual teaching and learning is very profitable for both.
Posted by: hornblower on January 20, 2004 at 12:52 AM
-
Simple As Possible (But No Simpler)
Software development is fundamentally a difficult activity and I don't believe that we should be keeping things complex when they could be simpler. If Java can become easier to use by adding features like auto-boxing and metadata annotations to the language then let's do it. Maybe then we'll spend less time fighting with the technology and more time thinking about things like clarifying the requirements, refining the design and writing the test cases.
Ian.
Posted by: ifairman on January 20, 2004 at 12:53 AM
-
make it FUN to learn so people have FUN doing it
* Is it wrong to make learning a complex (and serious) technical topic *fun*? Does it degrade the topic? Does it degrade/insult those who worked hard to become expert at that topic?
IMO programming SHOULD be fun. Where does it say in anyone's contract with his employer that he's not supposed to like his job?
* Now that just about all C/C++ programmers already know Java, who are these next 7 million going to be?
I've wondered the same... They'll have to be VB "programmers", and I don't know if that would be for the good of the community.
* Assuming there *is* at least *some* danger (and I believe there is) that some will come in to programming jobs lacking the understanding and appreciation we know they need, is there something we can do?
Precious little, except try to prevent people from getting enough knowledge to get hired without having the understanding and appreciation needed as well.
Combining the teaching of the one with spoonfeeding the other might be the way to go, and making programming fun while teaching it might just be the way.
My main concern is that those 7 million people entering the business might dilute the soup to such a degree that there may be no decent income to be made for the more expensive experienced programmers (which means, those of us who've over the years paved the way that made the entry of those beginners possible).
Much the same happened during the Y2K surge when uncounted numbers flocked to IT.
It took years weeding out the dead wood which cost all of us (IMO the entire IT boom was caused by this abbundance of relatively cheap labour and its failure at least in part by the inability of those people to be productive enough to matter).
Posted by: jwenting on January 20, 2004 at 01:02 AM
-
make it FUN to learn so people have FUN doing it
I try to have fun on my job, even when it's not official sanctioned by the company. And here's the thing: the company gets an unexpected benefit from me having fun...I learn something, and wind up a better developer because of it!
As far as the hypothetical 7 million people entering the business...when they join your company, teach them. On the one hand, as I mentioned in an earlier post, this allows you to mold them and prevent the sort of mistakes that would surely drive you crazy. At least as important, it helps you establish a reputation as a facilitator and mentor. Now, you are more than merely what you alone can accomplish, but the sum of all those you have nurtured have accomplished. This can only be good for your career.
On the other hand, you do have to watch out, or you might end up in management!
Posted by: jimothy on January 20, 2004 at 02:46 AM
-
There's two ways to make difficult things simple
Good programmers can make difficult things happen. Great programmers make difficult things look easy. The problem with this is that there are at least two ways to make difficult things look easy, and one of them leads good programmers to over-estimate themselves.
The better way to make difficult things look easy is to abstract the interfaces well such that you can make the general cases easy and still be able to handle the non-standard cases with the more difficult mechanisms. This lets folks new to the topic area learn the general case, and by virtue of seeing the other possibilities in the API, folks know that they're really just scratching the surface and that there's more power available when they need it.
The lesser way is to pick off the low hanging fruit and handle only the general cases. Usually, in these cases, the API designer explicitely discards the border cases ("No one does it _that_ way anymore", "If everyone does it this (ie, my) way, everyone's life will be easier", "They made it too hard (for me) to understand"). It then becomes necessary to force the borderline cases into the general mold to make the system work.
The problem that I see with 'dumbing-down' Java in order to ease migration from VB is that we should not sacrifice the existing growth path to do it. I believe that easing the transition into Java isn't enough: we have to preserve the path that leads to improvement in programming skill (in whatever language).
For example: using the new foreach mechanism means that new programmers don't have to ever see the Iterator interface. This is taken as a 'good thing', but one of the unintended side effects is that it also hides the more powerful implementations (ie, ListIterator). We'll end up with a generation of programmers that continue to re-invent or work around that useful mechanism.
Posted by: david_hall on January 20, 2004 at 06:09 AM
-
I'm not sure it's VB programmers
**I've wondered the same... They'll have to be VB "programmers", and I don't know if that would be for the good of the community.**
I saw some marketing data at Sun once that didn't point toward VB programmers as The Big Group making the shift. I'm not sure why that is, and it surprised the heck out of us. And sure enough, the folks I hear from are *not* coming from VB. I hear a lot from those with a web development background -- a lot of PHP and Perl programmers, and a surprising number of Lotus Notes / Domino programmers making the shift via IBM's tools. Yes, even Javascripters and Applescripters. Other 4GLers too. But I also hear from long-time programmers who simply haven't made the leap into OO, and their skills are dated (the last new language they learned was C, if that). They've lost confidence in their ability to get current and learn to think in an OO way, for example, and someone handing them the Gang of Four doesn't ease their anxiety.
I still don't know where the 7 million is coming from, but I can tell you from my experience at Sun and javaranch and reader email that it doesn't look like VB'ers are the dominant group. I have no idea what to make of that.
-Kathy
Posted by: kathysierra on January 20, 2004 at 07:17 AM
-
Nothing (is so bad about making ...)
**It is wrong to make the impression that they can make up for lack of either by simply reading that book. **
All I'm after is to open the door. They have to walk through and then KEEP WALKING. But I find it heartwarming and encouraging how many people write to ask, "What's next?" And the number one request? Surprisingly, patterns. I haven't heard from a single person who has said, "Great. Thanks. I'm all set now. Think I can get a job as an architect?" Frankly, I have found more interest in learning and growing and improving in the not-from-a-formal-programming-background folks than from some of the more seasoned developers I've worked with in the past. At least these newcomers KNOW that they need a *ton* more work, and they're enthusiastic about doing it. Like I said, I find it *really* encouraging and refreshing.
And I reckon that only a small subset would even *want*, say, a job as a lead developer on a big project. They just want to become competent programmers and see where it goes from there. And they don't kid themselves that production-quality software development is *easy*. Most have had enough experience with web projects to see just how complex it can can be to successfully deploy even the simplest web application.
-Kathy
Posted by: kathysierra on January 20, 2004 at 07:32 AM
-
An elitist attitude would be Java's downfall.
I agree with Kathy's position that we should make Java easier to learn and use. I must admit that I don't follow the logic of those that disagree.
Job protection is not a valid argument against making Java easier. The laws of evolution and capitalism dictate the market value of a skill set. The world is a moving place and not a place to get "comfortable". If you find your skill becoming a commodity, then increase your skill. Don't try and fight innovation and nature. So, source code should be open to all, but knowlege should continue to be voodoo? That makes no sense to me. The only result is that another technology will be able to do the same things in less time and with less skill (cost) and it will be game over. I fear that is the advantage that .NET has over Java.
Similar attitudes exist in both the Java and Unix worlds. It's probably the same people! I believe that this attitude has dramtically slowed if not prevented widespread, mainstream, adoption of either technology. We need to be inclusionary and not exclusionary.
Making a technology easier to learn and use does not require the technology to become less sophisticated or robust. Our industry has swung to both sides of this pendilum but never the center. Java should learn from Mac OS X. This variant of BSD Unix is probably easier to learn and use than Windows, yet a saavy Unix person can easily drop to a command prompt for the complete power and access that they expect from Unix. For Unix, it's the best of both worlds.
Java should continue down the path of both worlds. It should continue to reach out to new spohisticated technologies (i.e. wireless, web services, etc) but it also needs to enable a new breed of programmer that doesn't have experience in software engineering and or architecture.
Taking something complex and making it easier is no small feat. I believe that it takes much greater skill and experience to make a technology easier than it does to master the technology in the first place. I wonder how many of the elitists are up to the challenge?
Posted by: jbob on January 20, 2004 at 10:13 AM
-
It's the product, not the programmer
The Java community's concern should be with the quality of the products that are produced with Java. Related concerns include how easy it is to create quality products with Java, and perhaps more importantly how easy it is to create unreliable products with Java.
If "dumbing down" Java makes it easier to create bad products, then it's a bad idea. If the result is more high quality products then we all win.
Posted by: johnreynolds on January 20, 2004 at 10:55 AM
-
Fun defined; improve managers
"-Is it wrong to make learning a complex (and serious) technical topic *fun*? Does it degrade the topic? Does it degrade/insult
those who worked hard to become expert at that topic?"
Well, I suppose it depends on what your definition of fun is. Everyone has experienced what Mihaly Csikszentmihalyi calls "flow", a mental state that achieved when you are sufficiently challenged, and are netiher bored nor overwhelmed. Csikszentmihalyi found that people find this mental state itself enjoyable, no matter what task they were performing. On the other hand, if you define fun as removing all challenges in oder to achieve some other goal (so that students feel like they're smart, for example) then those who are serious about the topic naturally feel trivialized.
"* Assuming there *is* at least *some* danger (and I believe there is) that some will come in to programming jobs lacking the understanding and appreciation we know they need, is there something we can do?"
Everyone believes that they are competent, whether they are or not, so there is nothing we can do to help programmers here. What we're really lacking in the industry are managers (who often have no technical background) with the necessary skills or tools to assess the output of programmers that are working for them.
Posted by: jt2190 on January 20, 2004 at 11:03 AM
-
Java is weak for Web UI
I just found http://w4toolkit.com/com/index.html
it seems to compete well with *.NET tools for Web UI.
serge - http://leafy.dev.java.net/
Posted by: sm1 on January 20, 2004 at 11:22 AM
-
I was just asking myself the same thing!
I was tooling around with .NET and Visual Studio. It is brain dead easy to create a small app that uses a datagrid to a backend of and xml datastore. Java tools should give me the same things!
Posted by: robertx on January 20, 2004 at 01:56 PM
-
Learning OO Properly
"Is it wrong to make it easy for those without a formal CS background or years of programming experience to learn Java and/or OO"
No, of course note. But people should learn OO first, then learn Java's particular version of OO. If they go the opposite route they may have a hard time fully grasping proper OO (as in, for example, Smalltalk or Ruby).
Posted by: jamesbritt on January 20, 2004 at 07:37 PM
-
Just to be clear about that ...
The paragraph starting with "No! It is wrong to make the impression ... " was not meant to critisize the book. Maybe I should have written "It would have been wrong ...". The "So what?" at the end of the paragraph was meant to encourage you.
If I were to learn, say, Ada, Eiffel, Lisp or Prolog, I'd really love to have a "Head First" introduction to them. Even to really learn Java - to the point where I could write it, not just read it - which I'd do in a "How does it differ from C++" approach, I'd like to use your book among other ones.
Posted by: hornblower on January 21, 2004 at 12:06 AM
-
I'm not sure it's VB programmers
I was of course joking when singling out VB programmers :)
There's a market for VB as well as for Java, and those markets don't necesarilly overlap (we're seriously considering moving to VB for some parts of our own applications, for example clients to run on PDAs where using the Web Services layer built into the OS through .NET would make development a lot faster than building a Java app and having to do it all ourselves).
Borland tried to get the VB crowds onboard of the Delphi and Java bandwagon in 2001/2002 and failed there too.
During a product launch for Delphi 5 (I think it was), a release where the marketing had been specifically targeted at VB developers, out of 100+ people in the auditorium only about 5 were VB users and only 3 of those had not used Delphi previously...
The rest were all existing users of Borland tools (most earlier Delphi versions, some using other Borland tools or like me several of them).
Domino/Notes people are a natural target for Sun, seeing as IBM is moving towards integrating ever more Java into those products.
PHP programmers will after a while run up to the same constraints that limit JSP architecture 1 and see that they have hit a dead end in that and start looking for alternatives. Servlets are a natural choise there, probably in combination with continued use of PHP for (part of) the user interface code.
I think that that is the way forward. Not to force people into strictly Java, but point out the strengths of Java in combination with other tools and environments and make that interoperability easier.
That might bring in those 7 million not as dedicated Java people, but rather as parttimers who use Java in those situations where their existing tools aren't enough and who may over time start using Java more and more naturally.
Not the approach of invasion by force, but infiltration by stealth.
Posted by: jwenting on January 21, 2004 at 04:20 AM
-
Learning OO Properly
in an acedemic setting maybe, but in the real world "proper" OO technique is less important than getting the product out the door on time and under budget.
I'd rather have someone with practical experience working next to me than someone who has every OO certificate in existence but has never worked to a deadline on a realworld project and had to read code written by one person and maintained by another with a completely different background in an environment where coding standards mean everyone uses the same compiler version.
Posted by: jwenting on January 21, 2004 at 04:27 AM
-
A recent Java convert and Head First reader
I got started in software development through an odd path; I was fascinated with computing and there were some applications some folks wanted that other people didn't want to build. When I started looking at options, VB seemed the most welcoming and can-do of my options. I was in my mid twenties; college was a ways back and my degree was in Business. So, off to Barnes and Noble I went.
When making production apps, it doesn't take too long to find the limits of VB. But, the apps went out, they worked, and I made more money. I had wished there was an alternative to Visual C++, but things looked bleak. I actually had one guy in a bookstore dissuade me from Java; he was a Java developer and said that if I used VB that Java would probably be beyond me. That one encounter typifies most of the interaction I have had with Java folks who didn't actually work with me.
I turned my focus toward the DBA/database developer skills I had, and that's what I have been doing for some years now. But I still do development, and the more I have learned, the more Java appeals to me over Microsoft offerings.
Would I prefer to have had a CS degree and oodles of OO experience before my entry into software development? You bet. But, guess what? That was not my lot in life. There's lots of people in my boat. I want to learn, and learn to do things well. It is hard, but it's the kind of hard I call fun. I don't think 7 million devs are willing to make the investment to become Java-proficient, but who knows, with offering like Head First Java, perhaps it could change.
I could sum it up like this: this is the first book out of several (Learning Java, 1st and 2nd editions, Core Java, Vol. I and II) where I am being taught how to form sentences before I am asked to write an essay or read a classic novel. I wrote a little more about the experience on my weblog (http://www.yepthatsme.com/blogarch/000030.html).
I know full well this book is a primer, but that is what I need. I need to be able to "think" and "speak" in Java; once I can, the great references that I mentioned earlier are sure to be more digestible. Many thanks to Kathy and Bert for the book.
Posted by: barryhawkins on January 21, 2004 at 09:59 PM
-
the community sould be inclusive.
I can't se any reson not to. The chalange is for more senior developers to set a good example and help out as much as possible.
And not being a CS shouldn't stand in anyones way, if it does offer them good litrature (for exammple http://www.ibiblio.org/obp/thinkCS/)
Posted by: tomasm on January 22, 2004 at 02:56 AM
-
Making learning Java easy
I think that if people think it is bad to teach Java to newbies then it really is deplorable. One of the major benefits of Java is the large community of friendly people that are always willing to help each other. Name another language that has as many open source projects or tutorials online. Armed with the Sun site alone you could become a very competent developer.
Kathy and Bert's osbourne book "Java 2 Sun Certified Programmer and Developer" is still one of the best certification books I have read. It wasn't at all condescending and was written in a very accessible way.
Posted by: mcogan on January 22, 2004 at 11:58 AM
-
Java is weak for Web UI
take a look at this website
http://www.w4toolkit.com/index.php?bsID=199
Posted by: panco on June 07, 2004 at 10:26 PM
-
Kathy Sierra: You Rock! I think Kathy Sierra and co. have made Java even more interesting than I would've imagined. Being married with kids, it gets difficult to find the time to learn a new language. I love programming and I really appreciate how the "Head First" series builds on what you already know. Currently, I'm learning JSP at college and, I must say, I've picked up more from the book "Head First - Servlets and JSP" than from my college course. Thank you very much Kathy. In my book, you are an elite teacher.
Posted by: vinster72 on April 20, 2005 at 08:46 AM
-
wow power leveling
wow powerleveling
wow power leveling
wow gold
wow items
feelingame.com
wow tips
Most Valuable WOW Power Leveling Service
wow power leveling faq
cheap wow power leveling
wow power leveling
wow powerleveling
wow power lvl
Posted by: wowleveling3 on December 14, 2007 at 12:08 AM
-
网络营销软件
网络营销软件
网络营销软件
群发软件
群发软件
---
群发软件
网络营销软件
论坛群发软件
网站排名软件
群发软件
推广小助手破解版
论坛群发软件
网站排名软件
群发软件
推荐给你很好的群发软件和信息群发软件和供求群发软件
推荐给你很好的群发软件和信息群发软件和供求群发软件博客群发软件网络营销软件网络营销软件
网站排名软件网站排名软件网站优化软件信息群发软件信息群发软件信息群发软件论坛群发软件网站推广软件网站推广软件博客群发软件博客群发软件
群发软件
网络营销软件
网站推广软件
群发软件群发软件博客群发软件论坛群发软件网络营销软件论坛群发软件
信息群发软件推广软件网站推广软件网络营销软件网站推广软件群发软件网站排名软件网站推广软件博客群发软件论坛群发软件群发软件网站排名软件网站推广软件博客群发软件论坛群发软件
网站排名软件
博客群发软件
网站排名软件
网站推广软件
群发软件信息群发软件
免费论坛群发软件
论坛群发软件
网站排名软件
免费博客群发软件
网站推广软件
群发软件
博客群发软件
网站排名软件
网站推广软件
群发软件信息群发软件
免费论坛群发软件
论坛群发软件
网站排名软件
免费博客群发软件
博客群发软件
信息群发软件
论坛群发软件
信息群发软件
博客群发软件
qq群发软件
邮件群发软件
博客群建软件
企业名录搜索软件
信息群发软件
邮件群发软件
论坛群发软件
博客群发软件
网站推广软件
网络营销软件
全能营销破解版
网络营销软件
论坛群发软件
论坛群发软件
论坛群发软件
网络营销软件
信息群发软件
信息群发软件
信息群发软件
群发软件
论坛群发软件
Posted by: sun98989 on December 30, 2007 at 05:09 AM
|