Сведения о вопросе

Drake

12:30, 2nd August, 2020

Теги

open-source    

Хорошо написанные проекты с открытым исходным кодом (для обучения)?

Просмотров: 417   Ответов: 9

Мы учимся программированию, создавая программы и учась у других программ. Какие репозитории/программы с открытым исходным кодом вы предлагаете для обучения / совершенствования программирования?

При цитировании ссылки, пожалуйста, также упомяните вещь,которая вам понравилась.



  Сведения об ответе

KOMP

15:43, 5th August, 2020

Я бы рекомендовал вам еженедельные статьи Скотта Ханселмана с исходным кодом, он делает именно то, что вы предлагаете, то есть читает больше исходного кода, чтобы стать лучше. Это стоит того, чтобы прочитать.


  Сведения об ответе

FAriza

02:49, 14th August, 2020

Я могу порекомендовать вам коллекцию головоломок Саймона Тэтэма . Это серия головоломок (сапер, судоку, пятнадцать), доступных для Windows, OS X и Linux (а также для java апплетов). Архитектура довольно проста: есть интерфейс front-end с тремя реализациями (по одной на платформу), интерфейс back-end с одной реализацией на игру (я привел три примера) и середина, которая заставляет их говорить вместе, делать сериализацию и другие аккуратные вещи.

В принципе, это хорошо OOP. Написано в C году. Это легко сделать (я реализовал игры с наполнением и диапазоном), так как это хорошо документировано и легко читается.


  Сведения об ответе

fo_I_K

22:16, 24th August, 2020

Код Disruptor является образцовым, а также многое можно узнать из того, что он делает для достижения экстремальной производительности на современном оборудовании.

Стоит прочитать объяснения Мартина Фаулера о его архитектуре, техническую статью (PDF) и презентацию QCon . Кроме того, блоги разработчиков содержат много хорошего чтения - особенно блог механической симпатии , который учит многим вещам о том, как работает современная CPUs и память.


  Сведения об ответе

appple

11:37, 12th August, 2020

Это зависит от ваших интересов, но я работал с кодовой базой Quake III , и это было довольно хорошо написано и приятно работать. Это написано в C году.


  Сведения об ответе

lourence

19:29, 12th August, 2020

Один из лучших образцов ясного и лаконичного исходного кода, который я нашел, - это источник jQuery . Нравится вам Javascript или нет, но это отличный аргумент против защитников "code being the documentation" .

Есть много комментариев, но это не ascii художественное произведение, и вы можете видеть четкие рассуждения - комментарии позволяют вам точно знать, чего вы пытаетесь достичь.

Пример ( полный источник ):

(function(){

var 
    // Will speed up references to window, and allows munging its name.
    window = this,
    // Will speed up references to undefined, and allows munging its name.
    undefined,
    // Map over jQuery in case of overwrite
    _jQuery = window.jQuery,
    // Map over the $ in case of overwrite
    _$ = window.$,

    jQuery = window.jQuery = window.$ = function( selector, context ) {
        // The jQuery object is actually just the init constructor 'enhanced'
        return new jQuery.fn.init( selector, context );
    },

    // A simple way to check for HTML strings or ID strings
    // (both of which we optimize for)
    quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
    // Is it a simple selector
    isSimple = /^.[^:#\[\.,]*$/;

jQuery.fn = jQuery.prototype = {
    init: function( selector, context ) {
        // Make sure that a selection was provided
        selector = selector || document;

        // Handle $(DOMElement)
        if ( selector.nodeType ) {
            this[0] = selector;
            this.length = 1;
            this.context = selector;
            return this;
        }
        // Handle HTML strings
        if ( typeof selector === "string" ) {
            // Are we dealing with HTML string or an ID?
            var match = quickExpr.exec( selector );

            // Verify a match, and that no context was specified for #id
            if ( match && (match[1] || !context) ) {

                // HANDLE: $(html) -> $(array)
                if ( match[1] )
                    selector = jQuery.clean( [ match[1] ], context );

                // HANDLE: $("#id")
                else {
                    var elem = document.getElementById( match[3] );

                    // Handle the case where IE and Opera return items
                    // by name instead of ID
                    if ( elem && elem.id != match[3] )
                        return jQuery().find( selector );

...


  Сведения об ответе

screen

13:31, 29th August, 2020

Linux kernel - это очень хороший способ учиться.

Я знаю, что это может быть трудным для погружения из-за многоархитектурной структуры и большого количества кода, но есть очень хорошая статья, чтобы медленно войти внутрь, как эта от Тима Джонса .

Я многому научился, изучая конкретный предмет, например реализацию драйвера FAT и абстракцию файловых систем.


  Сведения об ответе

lourence

19:06, 25th August, 2020

Относительно небольшой, но с достаточной сложностью, чтобы иметь возможность учиться, мой голос переходит к:

Apache-это Log4Net фреймворк ведения журнала.

Его исходный код очень удобочитаем, и "cross-platform" [компилируется на: .NET 1.0, 1.1, 2.0, CF, MONO...], таким образом, будучи ценным для урока в развитии "cross-platform" C#...


  Сведения об ответе

прога

10:22, 7th August, 2020

Вы найдете множество примеров. Но как сказал Джим бак, это зависит от ваших интересов. Я узнал метрическую s-тонну "stuff" из источника SharpDevelop .


  Сведения об ответе

repe

22:42, 19th August, 2020

Если у кого - то есть копия чтения кода Диомидиса Спинеллиса , о каких проектах с открытым исходным кодом он там пишет?


@Avinash: если вы хотите узнать больше о программировании в целом, я бы рекомендовал как чтение кода, так и качество кода от Spinellis. У них есть примеры кода из различных проектов, все FOSS, я полагаю, поэтому вы можете не только прочитать о них, но и пойти и получить версию, обсуждаемую в книге, и последнюю версию, чтобы прочитать больше кода из них и узнать.



Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться