Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - ilovb

Страницы: 1 2 [3] 4 5 ... 8
31
Хочу высказать свои мысли по поводу обучения программированию.
У меня стойкое впечатление, что в университетах обучают не тому, чему на самом деле нужно.
Я вижу много студентов старшекурсников, которые приходят к нам устраиваться. Они ничего не знают и не умеют.
За последние 3 года к нам пришел только один человек, который смог быстро (1-3 месяца) научиться решать задачи средней сложности за приемлемое время. И этот паренек имеет 11 классов образования и нулевой опыт программирования. Просто варит голова....
По моим наблюдениям талант уделывает высшее образование в сухую.
Также есть еще интересное наблюдение.
Когда выпускник приходит устраиваться, то он совершенно уверен что изучил в университете достаточно. Он уверен в своих знаниях и силах. Он смотрит на бывалых разрабов как на равных. Он привык, что в университете ему все давалось относительно легко. Он думает что сертификат 1С - это не сложнее экзамена по программированию. И вот мы его взяли...
Начинается суровая практика и безжалостные реалии настоящего программирования... с тупыми или вредными заказчиками... со сроками... с задачами, которые не помещаются в голову целиком... с мутными постановками... с отсутствием ТЗ... и т.д. и т.п.
Через пару месяцев он понимает что ему еще учиться и учиться. На опытных товарищей он смотрит как на магов.
Через год он понимает что за 5 лет в универе он не получил никаких практически ценных знаний в программировании. Приходит осознание, что сертификат он пока не в состоянии одолеть... несмотря даже на год практики!

Сейчас еще народилось целое поколение программеров, которым совершенно не интересно программирование само по себе. Для них это работа и не более. И вот с ними настоящая беда. Они думают что их научат в университете чему-то... Но это не так! Все мои знакомые программеры самоучки. Да, они отучились в универах, но он им не дал никаких знаний в программировании. Как правило большинство знало большую часть университетского курса программирования еще в школе. Меня тоже никто не учил программировать. Все знания добыты самостоятельно из книг и практики.

Что делать? Я не знаю. От университетов выхлоп практически нулевой.
В итоге мы берем этих студентов, если видим что голова варит. И учим их своими силами... с нуля.
Нужны техникумы, в которых обучают кодеров(именно кодеров). 3 года практики и немного теории при этом...
Такие чуваки должны уметь как минимум грамотно решать легкие задачи по ТЗ за 1-4 часа не дергая своего руководителя при этом.
Причем учить их нужно конкретной технологии и языкам. Т.е. если это СУБД, то он хорошо должен знать реляционную теорию и околосубдшные плюшки типа индексов, транзакций и т.д. И он должен иметь много практики с SQL. Желательно все 3 года практики разной степени сложности.(На деле же SQL народ не знает совсем никак...)
Вот на таких чуваков имхо будет спрос.

32
Общий раздел / Как нужно писать ПО
« : Сентябрь 01, 2013, 09:52:39 pm »
Рекомендую к просмотру:
Raphaël: достижения, ошибки и планы

33
Как меня уже за....ли эти двойные стандарты.

Сейчас получил предупреждение в личку:
Цитата: Евгений Темиргалеев
Это предупреждение, вынесенное вам администратором или модератором этого сайта.
Цитировать
Это предупреждение, относящееся к следующему вашему сообщению: http://forum.oberoncore.ru/viewtopic.php?f=119&p=80682#p80682.

'А я вроде чОтко написал: "BB может и полезен в школах и лабораториях. Но найти применение в повседневных задачах и работе я ему не смог."'

П. 2.4 правил: "При полемике свою позицию необходимо фиксировать и обосновывать.  Категорически не приветствуются сообщения митингового стиля, идеологические лозунги и клише..."

Ну фиг с ним, что Евгению тут померещились идеологические лозунги. Всех глючит иногда.

Но вот я более чем уверен что info21 такого предупреждения не получил:
Цитата: info21
Плюс, сказанные высказывания дико не вяжутся с гениальной расширяемостью ББ, которая стоит за возражениями И.К.

Т.е. правила никого не е..ут. Обычное стадное деление на своих и чужих. Приматы...

Петр за свои провокационные сообщения уже давно по логике должен быть забанен навсегда.
Но он ведь свой... Ему простительно....

34
Общий раздел / Плазма в невесомости
« : Июнь 07, 2013, 08:09:02 pm »
Любопытное видео:
http://www.youtube.com/watch?v=PJpgxUpLglk

35
Общий раздел / SDL 2
« : Июнь 05, 2013, 07:37:02 pm »
Цитировать
June 2, 2013 - 10:21   
SDL 2.0 is now in Release Candidate status!
http://www.libsdl.org/news.php

36
Общий раздел / SYSTEM
« : Май 28, 2013, 08:13:08 pm »
Для тех кто плохо понимает зачем нужен псевдо-модуль SYSTEM в Оберонах и каким он должен быть на конкретной платформе вот интересная ссылочка из ETH: The Module SYSTEM

38
Существует ли такое в природе? Чем проще, тем лучше.
Т.е. чтобы были например итераторы по списку функций, типов, переменных и т.д.

Хочу написать на Lua тузлятину для конвертации сишных хидеров в бинд для CP.


39
Общий раздел / Собрать IUP
« : Май 12, 2013, 08:08:59 am »
http://www.tecgraf.puc-rio.br/iup/

Вчера пол вечера убил, но так и не смог собрать в VS2012. То ошибки вываливает. То dll не хочет собирать. Там еще модная штука для сборки есть http://www.tecgraf.puc-rio.br/tecmake/ но у меня оно совсем не завелось.
Как это сделать? Помогите, плиз.

В скайнтилле ошибка обнаружилась с русским вводом. Сейчас общаюсь с разрабом на эту тему.
Хочу у себя проверить некоторые идеи. Но блин собрать не могу :(

40
У меня сейчас встал вопрос где разместить бинд к IUP.

В bitbucket'е я немного разочаровался.
Работает медленно. Бывало даже лежал все выходные.
Не нашел способа указать ключевые слова для поиска.
Делать ссылку на всегда актуальную версию исходника неудобно.

Из всех хостингов, которые я щупал (gitorious, github, bitbucket, googlecode) больше всего понравился гугловский.

Кто что посоветует?

41
Общий раздел / Бинд к IUP
« : Май 04, 2013, 12:40:47 pm »
Сделал бинд к основной либе IUP (на 90%)

Во вложении бинд, сама либа и тестовый пример

43
Общий раздел / isalpha и локаль
« : Май 01, 2013, 04:34:38 pm »
В Lua регулярки используют сишную функцию isalpha. Как сделать чтобы русские буквы тоже обрабатывались?

44
Общий раздел / Течет память
« : Апрель 28, 2013, 04:10:41 pm »
Есть у меня код под LuaJIT:
local ffi = require("ffi")
ffi.cdef [[
void free(void *ptr);
]]

require 'miniz_h'
local miniz = ffi.load("miniz")

local function inflate(source)
    local decomp_len = ffi.new 'size_t[1]'
    local pdata = ffi.gc(miniz.tinfl_decompress_mem_to_heap(source, #source, decomp_len, 0), ffi.C.free)
    return pdata ~= ffi.NULL, ffi.string(pdata, ffi.cast("int", decomp_len[0]))
end

local function NewZipWriter(fpath)
   
    local zip = ffi.new 'mz_zip_archive'
    zip.m_file_offset_alignment = 0
    if miniz.mz_zip_writer_init_file(zip, fpath, 0) == miniz.MZ_FALSE then
        return nil
    end

    function write(dpath, data, level)
        if miniz.mz_zip_writer_add_mem(zip, dpath, data, #data, level) == miniz.MZ_FALSE then
            mz_zip_writer_end(zip)
            os.remove(fpath)
            return false
        end
        return true
    end

    function finalize()
        if miniz.mz_zip_writer_finalize_archive(zip) == miniz.MZ_FALSE then
            miniz.mz_zip_writer_end(zip)
            os.remove(fpath)
            return false
        end 
        miniz.mz_zip_writer_end(zip) 
        return true
    end

    return {
        write = write,
        finalize = finalize
    }

end

Работает отлично. Память не течет.

Реализовал это в виде нативной луашной либы:
#include <ctype.h>
#include <lauxlib.h>
#include <lua.h>
#include <stdlib.h>
#include <string.h>
#include <miniz.h>

/*
 * ** compatibility with Lua 5.2
 * */
#if (LUA_VERSION_NUM == 502)
#undef luaL_register
#define luaL_register(L,n,f) \
               { if ((n) == NULL) luaL_setfuncs(L,f,0); else luaL_newlib(L,f); }

#endif

// static int lmz_inflate(lua_State *L);

static int lmz_inflate(lua_State *L) {
   
    size_t decomp_len;
    size_t comp_len;
    void *pDecomp_data;
    const char* pComp_data;
   
    comp_len = 0;
    pComp_data = luaL_checklstring(L, 1, &comp_len);

    pDecomp_data = tinfl_decompress_mem_to_heap(pComp_data, comp_len, &decomp_len, 0);
   
    lua_pop(L, 1);
   
    if (!pDecomp_data) {
        lua_pushnil(L);
        return 1;
    }
   
    lua_pushlstring(L, (char*)pDecomp_data, decomp_len);
   
    free(pDecomp_data);
   
    return 1;
}

static mz_zip_archive *checkzip(lua_State *L) {
      void *pZip = luaL_checkudata(L, 1, "lmz.zip_writer");
      luaL_argcheck(L, pZip != NULL, 1, "'zip_writer' expected");
      return (mz_zip_archive*)pZip;
}

static int lmz_new_zip_writer(lua_State *L) {

    const char *pZip_filename;
    mz_zip_archive *pZip;

    pZip_filename = luaL_checklstring(L, 1, NULL);

    lua_pop(L, 1);

    // размещаем в стеке указатель на структуру
    pZip = (mz_zip_archive*)lua_newuserdata(L, sizeof(*pZip));
    memset(pZip, 0, sizeof(*pZip));

    if (!mz_zip_writer_init_file(pZip, pZip_filename, 0)) {
        lua_pushnil(L);
        lua_pushstring(L, "Failed creating zip archive");
        return 2;
    }

    luaL_getmetatable(L, "lmz.zip_writer");
    lua_setmetatable(L, -2);

    return 1; 
}

static int lmz_zip_writer_write(lua_State *L) {

    const char *dpath;
    const char *data;
    size_t dsize;
    mz_zip_archive *pZip;
    mz_uint level;

    // при вызове метода zip:write()
    // первым в стек помещается 'zip'
    pZip = checkzip(L);

    dpath = luaL_checklstring(L, 2, NULL);
    data  = luaL_checklstring(L, 3, &dsize);
    level = luaL_checkint(L, 4);

    lua_pop(L, 4);

    if (!mz_zip_writer_add_mem(pZip, dpath, data, dsize, level)) {
        mz_zip_writer_end(pZip);
        lua_pushnil(L);
        lua_pushstring(L, "Failed add to zip archive");
        return 2;
    }

    lua_pushboolean(L, 1);

    return 1; 
}

// финализатор архива
static int lmz_zip_writer_finalize(lua_State *L) {

    mz_zip_archive *pZip;

    // при вызове метода zip:finalize()
    // первым в стек помещается 'zip'
    pZip = checkzip(L);

    if (!mz_zip_writer_finalize_archive(pZip)) {
        mz_zip_writer_end(pZip);
        lua_pushnil(L);
        lua_pushstring(L, "Failed creating zip archive");
        return 2;
    }

    mz_zip_writer_end(pZip);

    lua_pop(L, 1);

    lua_pushboolean(L, 1);

    return 1; 
}

// функции библиотеки
static const luaL_Reg miniz_functions[] = {
    { "inflate", lmz_inflate },
    { "new_zip_writer", lmz_new_zip_writer },
    { NULL, NULL }
};

// методы zip_writer
static const luaL_Reg miniz_zip_writer_methods[] = {
    { "write", lmz_zip_writer_write },
    { "finalize", lmz_zip_writer_finalize },
    { NULL, NULL }
};


LUALIB_API int luaopen_lmz(lua_State * const L) {

    // метатаблица для объекта zip_writer
    luaL_newmetatable(L, "lmz.zip_writer");
    lua_pushstring(L, "__index");
    lua_pushvalue(L, -2);  /* pushes the metatable */
    lua_settable(L, -3);  /* metatable.__index = metatable */
   
    // регистрируем в метатаблице методы zip_writer
    luaL_register(L, NULL, miniz_zip_writer_methods);
   
    // регистрируем функции библиотеки
    luaL_register(L, "lmz", miniz_functions);

    return 1;
}

При использовании zip течет память. Хде повох? O_o

45
Общий раздел / Squirrel
« : Апрель 27, 2013, 06:31:47 pm »

Страницы: 1 2 [3] 4 5 ... 8