• Как очистить консоль в c++?

    icelaba
    @icelaba
    Знаю и умею всё
    Так логичней?
    cout << string( 100, '\n' );

    Под виндовс вот support.microsoft.com/kb/99261
    начиная отсюда #define PERR(bSuccess, a
    Ответ написан
    Комментировать
  • Что шлет смартфон в сеть?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    Самый "правильный" способ описан здесь - https://developer.android.com/tools/debugging/ddms.html

    А так, во время того как раздаёте с ПК интернет (или с роутера), ставите любую снифалку трафика на ПК (тот же wireshark) и развлекаетесь. Этот способ надежнее.
    Ещё надежнее - linux-роутер, к которому подключен wifi-роутер, который забирает интернет с linux-роутера (читай- обычного ПК с двумя сетевухами) и раздаёт его по wifi (дампить, соответственно, на linux-е).
    Самое надежное - только своя фемосота и дампить трафик на ней)
    Причина тут простая - многие зловреды перестают слать трафик, когда "видят" подключение к adhoc-сети (прямое подключение к ПК по wifi) или подключение к компу с включенным дебагом. Намного реже они таким образом реагируют на подключение к infrastructure-сети (роутеру/точке доступа), но роутеров с нормальным tcpdump я пока в природе не встречал.
    Ответ написан
    Комментировать
  • Почему цикл for не уменьшает значение в префиксной форме?

    @Vampiro
    любой операнд, который вы поставите третьим аргументом будет выполнен в самом конце прохождения цикла.
    Ответ написан
    Комментировать
  • Как вывести формулу для эквиваленции?

    @Fil
    Я так понимаю, что в задании требуется привести к полиному Жегалкина. Правая часть уже соответствует.
    Эквиваленция в дизъюнктивной форме: A<=>B = AB v (-A)(-B) (это практически по определению)
    Используем формулу для дизъюнкции: A v B = A + B + AB (разумеется, ее тоже нужно обосновать, но я уверен, что подобное выражение должно доказываться ранее).
    Затем, используя некоторые свойства булевой алгебры и, в частности, операции суммы:
    AB v (-A)(-B) = AB + (-A)(-B) + AB(-A)(-B) = AB + (-A)(-B) = AB + (A+1)(B+1) = AB + AB + A + B + 1 = A + B + 1

    Разумеется, этот способ не единственный. Еще, например, можно составить таблицы истинности для обоих выражений. Или заметить, что эквиваленция - это инвертированная сумма, то есть, сумма + 1. Или свести обе части к ДНФ/КНФ.
    Ответ написан
    Комментировать
  • На что работодатели больше всего обращают внимание - на портфолио или знания конкретных технологий?

    makol
    @makol
    Всех, всегда, и при любых условиях интересует конечный результат,а уж потом средство его достижения! И вас в том числе! Поэтому практические навыки прежде всего.
    Ответ написан
    Комментировать
  • Хочу быть программистом, но не выходит. Как двигаться вперед?

    @hsc
    full stack python back-end developer
    Эх, расскажу свою историю..
    Мое знакомство с программированием началось, когда мне было 5 лет. Тогда отец откуда-то достал компьютер. Среди прочих ярлычков в папке "игры" был заветный.. Марио! До этого я часто видел эту игру у друзей на приставках, но поиграть в нее вдоволь так и не мог) Можете представить как я хотел поиграть в нее.. но, не тут то было. В 3-м мире я всегда ловил (как я уже знаю) exception и недоуменно смотрел на огромное окно с красным крестиком, текстом на английском и кнопкой "ок". Как-то раз мне повезло, я смог каким-то образом ускользнуть от ошибки, и попасть на следующий уровень. Моей радости не было предела! Я с энтузиазмом приступил, но.. через пару шагов снова увидел ее, уже привычную ошибку. Это стало последней каплей. Тогда я решил, что создам свое Марио и буду играть в него, сколько захочу) Начал с того, что нарисовал в paint уровни игры. Потом из конструктора построил компьютер)) Потом как-то призабыл, но идея во мне жила. В 5-м классе сестра мне купила огромную 600 страничную книгу по Delphi и тогда и моя мечта стала ближе.

    Читая вопрос я вспомнил себя. Знакомое чувство, когда не у кого спросить что-нибудь, когда программный листинг на одну-две страницы кажется огромным и непонятным и когда ты впервые понимаешь зачем в программе переменные! Это чувство я не забуду никогда!

    К чему я? @microvolnovka, то, что ты в 9м классе значит не больше, чем то, чего ты сам хочешь и во что сам веришь. Из опыта скажу, что ты во многом прав про самообразование, но тебе стоит использовать это, ибо понимание этого — преимущество. Ты уже встал на путь самосовершенствования, иди им. Читай книги, спрашивай, ищи, снова читай, снова спрашивай и снова ищи. Ставь себе цель для того, чтобы знать к чему идешь и чтобы силы не затрачивались зря. Технология — это инструмент. Человек, который в совершенстве владеет инструментом — ремесленник, человек который в совершенстве владеет ремеслами — мастер, но и это не предел.

    В университете знания дают, но тем, кто хочет взять. Если не почерпнешь из университета знаний, то варианта 2: или ты глуп, или ты знаешь больше, и не нуждаешься. Но, как правило, 2е почти никогда не встречается. Если ближе к сути, то в университете могут дать направление в котором следует идти и экзаменаторов, которые с более-менее профессиональной точки зрения смогут оценить твои успехи. Плюс ко всему — иногда могут встречаться очень хорошие знакомства, но университет без работы над собой почти ничего не приносит.

    ------
    Upd: я в университете планирую небольшие курсы. Они будут не он-лайн, и аудитория буде по старше, но пока-что ни того ни другого у меня нет, а желание и чуть-чуть возможности поделиться опытом и знаниями есть. Оставляю почту для тех, кому может пригодиться такая помощь и на растерзание spam-ботам: HaySayCheese@gmail.com
    Ответ написан
    Комментировать
  • Как запускать .cpp в VS раздельно?

    Teivaz
    @Teivaz
    Следует понимать что именно делает ви;уал студия когда ты просишь скомпилить проект. Три основных этапа:
    Создание единиц трансляции
    На этом этапе каждый компилируемый файл (*.cpp включённый в проект) обрабатывает препроцессор: подставляет вместо "#include" код из файлов, убирает код в блоках игнорирумых "#if", подставляет все макросы "#define" и удалит комментарии.
    Кстати есть интересный финт с препроцессором, который немногие знают:
    // words.h
    "he", 
    "she", 
    "it"

    // main.cpp
    const std::string words[] = 
    {
    #include "words.h"
    };
    
    int main(int, char**)
    {
    std::cout << words[1];
    return 0;
    }

    в результате будет
    >>> she

    Компиляция ресурсов. На данном этапе каждая единица трансляции компилируется в объектный файл с расширением ".obj".

    Линковка. Она же компоновка. Исполняемый файл начинает выполнение с точки входа. Линковщику можно задать эту точку входа. По умолчанию в консольных приложениях винды это функция "main". Линковщик начнёт с того, что пройдётся по всем объектным файлам, найдёт эту функцию и начнёт с неё создавать ".exe" файл. Потом отыщет все функции, которые используются в программе, добавит их в исполняемый файл, а вызовы их имён заменит вызовами по соответствующим адресам.

    Исходя из этого можно предложить несколько вариантов:
    Использовать комментарии для переопределения точки входа.
    Использовать препроцессор (#if #elif #else #endif).
    Использовать разные точки входа линковщика.
    Во время исполнения программы отслеживать устройство ввода (клавиатура, файл) и выполнять соответствующий участок кода.
    Ответ написан
    Комментировать
  • Как запускать .cpp в VS раздельно?

    Trrrrr
    @Trrrrr
    можно сделать excluded from build одному ццпшнику и создать разніе версии билда.
    Или заюзать условную компиляцию #if defined(MAIN1) .... #endif
    Ответ написан
    Комментировать
  • Как запускать .cpp в VS раздельно?

    @AlexP11223
    Никак наверно, нельзя больше 1 main'а в одном проекте иметь. Можно закоментить main в одном и написать в другом. Или новый проект создать с этими файлами (файлы даже не копируются в новый проект при добавлении в него существующих).
    Ответ написан
    1 комментарий
  • Почему Google Chrome стал отображаться по-другому?

    makol
    @makol
    Снести вашу версию подчистить все концы от нее на компе и поставить более старую, если с переустановкой будут проблемы, здесь решение Почему при запуске chrome появляется белое окно?
    Ответ написан
    Комментировать
  • Почему при запуске chrome появляется белое окно?

    makol
    @makol
    Вот то что есть, лично я не исключаю наличие у вас залетного вируса.
    productforums.google.com/forum/#!topic/chrome-ru/2...
    softobase.com/ru/vopros/chto-delat-esli-novyy-gugl...
    https://www.google.ru/search?q=%D1%85%D1%80%D0%BE%...
    Что бы сделал я, удалил хром, почистил ccleanerom систему, проверил антивирусом, и загрузил бы заново из инета установочный файл, антивирус использовал бы не один а хотя бы пару, или как вариант провел бы онлайн проверку
    Ответ написан
  • Замена setlocale(LC_ALL, "Russian);?

    а еще можно делать
    system ("chcp 1251 > nul");
    После чего в настройках концоли один раз поменять шрифт на lucida.
    Ответ написан
    Комментировать
  • Верно ли утверждение, что метод класса и функция-член класса одно и тоже?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Нет разницы. То же, что и с "абстрактными методами" и "чисто виртуальными функциями-членами". Можно спорить о том, что есть свои кошерные названия, но это больше дань традициям. Проще же в общении с коллегами оперировать общеупотребимыми терминами. Конечно, это только в случае отсутствия каких-либо специфических особенностей!
    Ответ написан
    Комментировать
  • Какая есть разница между /n и endl?

    bak
    @bak
    \n не везде является переносом строк. endl - более универсальное решение, гарантированно работающее на всех платформах. Кроме того endl зовёт flush, который нужен для гарантированной записи (обычно запись происходит не сразу, а буферизуется).
    Ответ написан
    1 комментарий
  • Как развивать характерный программистам тип мышления?

    @Haderach
    Попробую привести пример из области не связанной с ИТ : футбол, как стать хорошим футболистом? Здесь неглавное научиться жонглировать мячом, а важно понимать стратегию, расставлять план игры, создавать нужный настрой, все это приходит с опытом. Нельзя взять какой-нибудь учебник и просто прочесть там, это нужно прочувствовать. Так вот, к чему я все это - основной способ становления мышления - это опыт (отсюда и разговоры про институтские годы, в это время происходит вырабатывание некоторых общих представлений). Чем больше опыта - тем лучше. Нужно писать свой код (желательно чтобы его кто-нибудь оценивал) и читать чужой (например на github).
    Ответ написан
    Комментировать
  • Хочу быть программистом, но не выходит. Как двигаться вперед?

    @CAMOKPYT
    1) Не верь в активно форсируемый миф про никчемность ВУЗов, математическую базу никто не отменял. Никто не занимается ни вебом, ни формочками после 2-3 лет опыта работы, потому что это скучная и однообразная работа, потом захочется заниматься программированием, никакие книжки не помогут, уже просто не захочется тратить 1-2 года на то чтобы все это освоить и будешь Senior Frontend Developer с 10 годами опыта. ВУЗ дает необходимую базу. С++ билдер или асм для 8086? Это вполне нормально, это база. На начальном этапе гораздо легче спросить препода, чем гуглить, самому учится по книгам это очень очень тяжело, особенно самые основы. Чтобы идти в свободное плавание, надо хотя бы 2 курса отсидеть на парах, чтобы иметь представление что гуглить. А еще в ВУЗе учат английскому, для программиста он даже важнее чем математика.
    2)3) Насчет выбора первого языка, я считаю что изучать чистый Си можно только под строгим присмотром знающего преподавателя и после хотя бы пол года изучения Computer Science, в противном случае только Паскаль. В первом языке главное научится излагать алгоритмы в коде и чуть-чуть пользоваться окружением (файлы\графика\память) и всё. Не надо требовать от первого языка промышленной востребованности. Научиться основам программирования, гораздо сложнее чем просто выучить синтаксис языка. Вообще лучше сначала получать знания непосредственно из курса Computer Science, так например я сначала прослушал курс Операционных систем и сред и курс Компьютерных сетей, а через полгода мы практиковались с программированием сокетов и в управление потоков, когда понимаешь на уровне ОС что и как работает хотя бы поверхностно, то программировать становится гораздо легче и не важно на каком языке. А насчет следующих языков, довольно тяжело сказать, с одной стороны надо выбирать под отрасль, но чтобы выбирать надо знать какая отрасль нравится, а пока не попрограммируешь в ней, понять не получится, этакая рекурсия. Я советую выбрать сразу 3 языка и изучать их, причем в первую очередь не синтаксис,а философию, какие цели ставил перед собой разработчик языка и насколько ему удалось их достичь, если это то что тебе нравится (то как язык решает поставленные задачи), то его и учи, а 3 языка для того чтобы было разнообразие, я для себя выбрал C#, Ruby и C++, как довольно разноплановые, но промышленно востребованные языки. Ну и не стоит забывать про сопутствующие технологии, без них не прожить, так любая более-менее большая программа требует базу данных, а это довольно обширная тема, а еще есть фронтэнд без которого также не обходится ни одна программа взаимодействующая с пользователем, а это языки разметки, тоже довольно обширная тема.
    Ответ написан
    2 комментария
  • Android: Qt vs Java. Что лучше использовать?

    @dplsoft
    Посмею оспорить ход рассуждений lorus ( Android: Qt vs Java. Что лучше использовать? ).
    Итог у нас почти один, но как в математике - когда ход рассуждений ошибочен - даже если ответ верен - то задача не решена. Возможно во много субъективно, но выскажусь, на правах личного мнения человека, который любит и писал и на Qt, и на Android с его "родным" Java тоже.
    На Qt для Android не писал, потому что на момент начала последнего проекта технология была сырая.

    И так: Не агитка за Qt но несколько слов в защиту Qt.

    Забегая вперед скажу: топикстартеру - если есть небольшой опыт разработки под Андроид, вы не работали ранее с Qt, и вам не важна переносимость исходного кода между всем и вся - продолжайте осваивать Android SDK ( Java ) .
    По крайней мере, сейчас.
    Хорошее знание хотя бы одного инструмента, лучше чем посредственное знание двух. ;)
    C Qt под Андроид потом разберетесь. Да и "пообкатаннее" оно будет.


    1. Qt - это всё-таки C++. Разрабатывать на нём существенно сложнее, чем на Java. То есть дольше и с большим количеством ошибок.

    Надо отличать "просто С++" и С++\Qt. В первую очередь, Qt - это фактически диалект языка С++. Например в объявлении Qt-класса появляются дополнительные секции signal и slots, а в процессе сборки существует фаза мета-компиляции, которая делает C++ код под вашу платформу. Не удивлюсь, если для андроида генерируется сместь Java и C++ кода которая потом скармливается Android NDK.

    Во вторых, Qt - это _самодостаточный_ фреймворк. Никаких STL или "чего-что-ещё что представляют себе в комплекте с C++" типичные сторонние разработчики.
    Многих проблем, которые приводят к сложности разработки "на простом C++" в "С++\Qt" просто нет "by design".

    Например в Qt заложен замечательный механизм предотвращения от выхватывания "null-poiunter" - "сигнал-слоты". Это в разы упрощает и делает надежнее работу как с GUI, так и с например, объектами, работающими в разных потоках. В Qt это все сделать разы проще, чем городить аналогичные стандартные механизмы на Java. Я не говорю в итоге оно будет эффективнее - тут надо выяснять и можно поспорить - но вот то, что в Qt многие вопросы работы с потоками и межпоточным взаимодействием продуманы лучше а механизмы удобнее - на мой вгляд это факт.
    (Хотя вот такого классного механизма аки runnable, в Qt нет. Но ждем 11-го стандарта С++.)

    В третьих - "С++\Qt" - это хорошо продуманный фреймворк едва-ли не с лучшим дизайном классов, продуманными методлами, единым стилем решения проблем.

    Как человек писавший на Qt 4.0-4.6 и сейчас закончивший первывый коммерческий проект для Android - могу выставить в сторону Java много минусов (в сравнении с Qt4/Qt5.) Просто потому, что Java - как в первую очередь коммерческая технология, был вынужден набирать нелогичности ради совместимости с предыдущими версиями - едва-ли не из первых версий Java. Посомтрите вопросы к сертификации - много вопросов, которые когда начинаешь разбирать "почему так" - уходят корнями в далекое темное прошлое развития Java. И в итоге - современная Java - это часто нелогичное, лоскутное одеяло, где в разных классах для решения одной и той-же задачи применяется если не разный подход и стиль, то как минимум разные имена методов. Ну вот зачем это?)))

    Да Java детально описан, и в технически прогнозируем - но его надо зубрить, тупо зубрить все исключения и проблемы наследования логики первых версий, и зубрить где используется put(), а где add()....
    ... а Qt-можно _понять_ и не зубрить, понять и только изредка заглядывать в документацию. И в итоге писать на нем - легче.

    К слову: дизайн классов гуглековских классов - хотя и очень-очень-оченьсвоеобразен и местами диковенен, но он, имхо, достаточно "строен" и в общей совокупности, не страдает такой уж сильной лоскутностью логики, какая имеется в стандартных классах Java. С какого-то момента ты понимаешь "как думали в гугле" и все становится несколько проще.

    Ещё к слову про миф "на Java писать проще чем на C++"(если сравнивается Java под DalvikVM и C++\Qt5):
    Не забывайте - DalvikVM - это вам не JavaVM.
    В DalvikVM вы легко отхватите "null-pointer-exception" если вы вдруг наивно думаете, что коли у вас есть в локальной переменной ссылка на фрагмент, активити или вью - то машина не уничтожит объект "когда ей вздумается", а у вас ваша переменная не об-null-ится.

    На понимание того, какие привычки десктопного написания и дизайна приложений нельзя переносить во фреймворки Android SDK и на перестройку собственного мышления - у вас уйдет несколько месяцев. А вы _начнете_ это понимать и отхватывать такие проблемы - как только начнете писать что-то бОольшее, чем набор разрозненных активити да пары фрагментов из учебных курсов.
    И в итоге - первый ваш серьезный проект на Андроиде - может влететь вам в хорошие переработки.
    Например, в том числе и потому что нет в Android SDK v17 жизненного цикла для класса Application. Нет механизмов для созранения состояния singleton-окружения и тд.и тп.

    А когда вы пишете на Qt - у вас гарантирована поддержка единых механизмов для всех платформ.
    Вам не надо перекраивать мозг, выработанные решения и отлаженные и проверенные паттерны.
    В итоге - писать на Qt - может статься и будет быстрее. В ряде случаев.
    Но из Qt - может быть сложно поиметь доступ к сугубо-андроидным сервисам типа поставщика данных.

    В общем я к чему. нет тут однозначного ответа что лучше а что хуже.
    Каждый инструмент достаточно мощный и у него много плюсов, минусов, и особенностей.

    2. Инструментарий разработки для C++ однозначно хуже такового для Java в силу, опять-таки, особенностей языка.

    Простите, но тоже малообоснованное утверждение. См пункт 1.

    Кроме того, отмечу:
    Qt-шный инструментарий позволяет вам получать одинаковое поведение на всех поддерживаемых платформах. Включая поведение GUI, Форм и одинаковую для всех систем архитектуру приложения. В идеале - с Qt - вы можете писать под Андроид так, как будто вы пишете под десктоп - не меняя архитектуру и структуру приложения.

    А когда вы пишете под Android на Java - вы всегда пишете кусок кода работающий в колнтексте DalvikVM и должны жить по предусмотренным данной машиной паттернам и сценариям, причем многие аспекты того "как это работает" - явно мало где прописаны. И если вдруг вы отсутпаете от стандартных шаблонов фреймворка Dalvik-машины - вы рискуете отгрести непонятные, трудно отловимые косяки, причем _вне_ вашего контроля, которые вы не можете корректно перехватить и обработать. Кто не знает - попробуйте уничтожить ViewGroup, id которого вы использовали как контейнер для размещения внутри него фрагмента. Как только вы делаете FragmentTransaction.commit() - вы ставите машине задачу, которую она будет выполнять "когда-то позже", вне вашего контроля, и не соизволит позволить вам корректно обработать исключение. Вплоть до возникновения ситуации, когда фрагмент пытается быть добавленным в Activity который уже отработал стандартные процедуры по Activity.finush(). Ладно бы оно выкинуло код ошибки куда, и тихо проигнорило - но это же Java - она выкинет исключение. А обернуть это дело в try...catch - вы не сможете - это не ваш кусок кода. Максимум что вы сможете - это "поймать перед смертью" Thread.UncaughtExceptionHandler. И все.
    (если я не прав - поправляйте меня, я же тоже не инженер гугля)

    3. Java - родная платформа для Android. Отсюда потенциальные проблемы с совместимостью у Qt.

    Вот зачем вы занимаетесь запугиванием?
    Android NDK (для разработки на С++) такой же родной как как и Android SDK (для разработки на Java).

    И с совместимостью у Qt с платформой Android проблем не больше, чем у любого другого приложения, которое использует вставки C++ кода и разработано с использованием стандартного Android NDK.

    --------------------------------------------
    Резюмируя: автору надо просто взвесить что зачем и как он собирается использовать.
    Если автору нужно одинаковое поведение на различных платформах - включая огрызочные поделия, Linux, разные Windows RT недопланшеты - то выбор ознозначен - курите Qt. Это возхитительнейший, ясный, хорошо продуманный и максимально логичный фреймворк, который не побоялись пересоздать с нуля ради устранения накопленных сложностей (вспоминайте переход с Qt3 на Qt4) Лично я приходил в восторг, когда работал с ним (2005-2009 гг)

    Но - в части Андроидного приклада : подозреваю, могут быть "технические риски" с использованием каких-либо особых "мобильных кусков" типа "работа со звонками, "работа с контактами", "работа с почтой" или "поставщиками контента", и пр.
    Я отошел от мира Qt когда Qt был 4.8 и я не искал там классы которые этим занимаются. Думаю что-то потомки троллей должны были создать в 5.2, но лучше проверить.
    В крайнем случае - может потребоваться стыковка с джава-объектами, и тут вам потребуется изучать Android NDK, и возможно даже писать немного оберточного кода на Java.

    Если же вам _нужна_ обязательная работа с описанными выше функциями, а на переносимость исполняемого кода - наплевать, или же у вас _уже_ есть опыт разработки с Android SDK - то конечно писать лучше на Java.

    Но в этом случае бутьте готовы к тому, что это не JavaVM, и сохранности ссылок _для_ряда_классов_ вам никто не обещает, а т.к. Java не предполагает наличия деструктора - вы _будете_ иметь определенные архитектурные сложности при построении сложных приложений.
    Например то, что в десктоп-приложении вы решили бы "простым" "синглтон-объектом" с простой функциональностью типа записал-прочитал из файла - тут вам _придется_ решать путем построения "поставщика контента" и т.п. - что значительно повышает "порог входа" для тех кто погруждается в разработку для Android.

    Но - надо отдать должное инженерам гугля - у них _были_ весомые основания поступать итак, и они максимально вас обезопасили от попадания в многие проблемы - если, конечно, вы используете фреймворк именно так, как это предполагается. И сделали многие механизмы достаточно элегантными, и приятными в использовании. Дизайн гуглековских классов мне в большей части нравится. В общем не забывайте понимать почему в примерах делается именно так как делается, а не иначе.
    Ответ написан
    5 комментариев
  • Как называется браузерная игра про C++?

    @Chubik
    www.programmr.com тут есть подобное
    Ответ написан
    Комментировать
  • Что можно реализовать на разных языках программирования? С++ Java Python на какие ОС?

    В первую очередь нужно научится "думать как программист"... но это все бредни)

    Если хотите реально чему-то научится то стоит начать с основ.
    Это Керниган Ритчи "Язык программирования Си".

    С++ не очень сложный язык. Он очень неоднозначный - одна задача может быть решена разными способами и у каждого из них будут свои недостатки. Тем более требует довольно специфических хаков против всяких там SFINAE и constant cast'ов.
    Особенно в последнее время стандартов С++ наплодилось...

    Учить С++ стоит, но до конца разобраться во всём будет очень сложно.
    По минимуму можно прочитать Герберта Шилдтa
    У него есть другие толковые книги по С# и Java - тоже можете глянуть.
    Ну и мне нравится Подбельский.

    С++ хорошо подходит для десктопных приложений.
    Тут можно почитать Макса Шлее Qt 4.8
    При этом особых сверхъестественных навыков С++ не нужно.
    Если хотите ити в "про" уровень - учите коллекцию библиоте boost.

    Java в последнее время очень хорошо себя зарекомендовала в вэбе.
    Хватит первого тома Core Java. Из фреймворков могу посоветовать Grails и Play2.

    Python / JS можно выучить на курсах Codecademy за 2-3 недели. Там же можно разгребсти html/css.

    Если хотите пойти в вэб...
    Желательно разобраться в haml sass compass stylus jade grunt bower yeoman bower angular библиотеках.

    Желательно разобраться с шаблонами проектирования, и почитать Мартина Фаулера.
    Есть ещё книги из серии Pragmatic Programmer самое интересное что у этого издательства нет ни одной плохой книги.

    Вообще по программированию и методологиям в целом стоит почитать совершенный код.
    Можно ещё почитать чистый код, и идеальную архитектуру.

    Для кроссплатформенных мобильных приложений можно разобраться с Air и Flex.
    Ответ написан
    Комментировать