Re: Would it be possible that gtk implementation in C++

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



For me, one of the most important GTK+ features is that it is
implemented in plain C. This simplifies its usage from other languages
(Lua, Go, C#, Rust, etc) as it is much more easy to have a C FFI than
a C++ FFI. For those who want to program with GTK+ with a C++
interface, there is gtkmm already.

On Mon, Aug 11, 2014 at 8:04 AM, Marcus Karlsson <mk@xxxxxxxxxx> wrote:
> On Fri, Aug 08, 2014 at 10:06:28AM +0800, 黄羽众 wrote:
>> Thank you for point out predecessors' question!
>>
>> I read the question and get some points, but I thinks the situtations change a lot and I am not ask the same question.
>>
>> 1. I am not ask for why GTK choose to implement in C, I know it have some historical reason. I want to make a proposal that gtk could be re-written with c++ just as GCC does. I want to discuss with you whether it is a good idea.
>
> It's of course possible from an academic perspective, even though as a
> lot of people have already said it would not be very practical. My
> suggestion is that anyone who wants to go forward with this makes a fork
> and works on it, with no expectations that it would ever be merged back.
> Take the opportunity to break the ABI and make a new great GTK+ inspired
> toolkit. If it's good then people will adopt it.
>
>> 2. Situations change a lot. Back to the time GTK was born, C++ is also very primitive so the developers would rather implement an object-system by hand. But nowadays C++ is stable and have many cool features especially in C++11 and the in-coming C++14. C++'s object-system is becoming more and more complete and add many useful features in GUI development such as exception, multi-threads and so on. I think due to the same reason did GCC turn to C++.
>
> C is not updated as rapidly as C++ but it is modernized occasionally.
> Support for multi threading is for example an optional part of C11.
> This doesn't really matter too much for GTK+ though since it uses Glib.
>
>> 3. Now, from the view of app developers, who are very likely learned C/C++/Java in classes, and learn Python/JS/PHP/Nodejs after class. And very probably have experiences coding with QT, HTML5, Android. They can't be more familiar with OOP and C++. But when they turn to GTK, they have to expand one line in C++ into three or more lines in C. This will threaten many developers. Although there are gtkmm available, but gtkmm didn't gain enough official support and recommend as GTK, and much fewer reference, help, support available. The official recommand is gtk in c rather than gtkmm in c++, so many devlopers read some tutorials and feel threatened and leave. What's worse, gtkmm didn't wrapper all of the gtk featurese. In some complex cases, developers have to use the low level gobj pointer to get things done.
>
> If the impression that developers get is that they have to use C or that
> they are strongly recommended to use C; then that sounds like a problem
> with the documentation.
>
>> Now is in 2014, It can't be more normal to develop GUI application with OOP style. I think it's time to change.
>
> GTK+ is already object oriented, and good GTK+ applications are often
> that as well even when they are written in C. You don't need support for
> object orientation in the language in order to use object orientated
> design.
>
>> GTK could be rewritten in C++, and what's more important, GTK should officially recommend to develop apps in C++, which can't be more familiar to GUI developers.
>
> The GTK+ project web site already says on its first page that while the
> toolkit itself is written in C it also supports a wide range of other
> languages. That's fairly official to me.
>
>                 Marcus
>
> [1] http://www.gtk.org/
> _______________________________________________
> gtk-list mailing list
> gtk-list@xxxxxxxxx
> https://mail.gnome.org/mailman/listinfo/gtk-list



-- 
http://oproj.tuxfamily.org
_______________________________________________
gtk-list mailing list
gtk-list@xxxxxxxxx
https://mail.gnome.org/mailman/listinfo/gtk-list





[Index of Archives]     [Touch Screen Library]     [GIMP Users]     [Gnome]     [KDE]     [Yosemite News]     [Steve's Art]

  Powered by Linux