![]() |
Куда податься после флеша?
Всем привет)
Уже около года задумываюсь о своей переквалификации на другие платформы/языки программирования, но пока не могу придумать в какую сторону двигаться (Unity + C#, или C++, или возможно ещё что-то). Сам занимаюсь флешем уже около 7 лет, зарабатываю деньги на нём около 6, и, конечно, перестраиваться тяжело, но, как мне кажется, без перестраивания есть большая вероятность в течении года остаться без заработка (по моим личным ощущениям, после большого ажиотажа вокруг социалок и, соответственно, флеша, сейчас идёт резкий спад интереса, и, как следствие, денег в этой среде). В общем, было бы интересно узнать мнения других людей, что стоит учить, в каком направлении развиваться и т.п. Возможно, кто-то уже проделал тот путь, к которому я только готовлюсь. |
Что? Опять?
|
А что нравится – тем и занимайтесь. Спрос на всё есть, так или иначе.
|
koIIImarik,
Кем именно вы работаете? |
koIIImarik - лето сейчас, хорошо бы вагоны начать разгружать и физический труд тут тебе и переквалификация
|
2 Astraport: такие темы сейчас часто создают да?)
2 Tails: flash-разработчик (давно давно начинал со всего подряд (баннеры, сайты, презентации), сейчас почти полностью ушел в социальные игры/специализированные приложения (которые нельзя реализовать на HTML5/JS) 2 NikolyA: как раз начал помогать строить дом и копать ямы :) но это не меняет сути вопроса так как хотелось бы все-таки работать разработчиком/программистом. |
Для себя я решил внимательнее следить за связкой Starling (Flash и JS) как FW + Feathers (Flash и JS) как UI + Type script (как на клиентах, так и на сервере - Node.JS) как язык. Все эти компоненты гармонично связаны между собой. Можно довольно долго продолжать делать проекты на AS3, можно легко и безболезненно переползти на JS в крайнем случае.
|
Дык а душа к чему лежит?
|
Цитата:
Джава вещь хорошая. Плюс она еще и на андроиде. И там ее не оракл разрабатывает. Лично я для себя решил уже давно, юнити с си шарп и джава. |
Да, С# крут, что бы там про Microsoft не говорили, но это лучший мейнстримовый ООП язык со сборкой мусора.
Даже если послушать что говорят про функциональный языки поверх виртуальной машины:
(не говоря уже о лямбдах, которые в Java только обещают к 8-й версии, структурах, yield-операторе, более мощных генериках, out/ref параметрах и т.д.) Не совсем в тему, но может быть сия речь прожжённого кодера/техлида вдохновит на саморазвитие: как перестать писать код |
Цитата:
Имхо, при выборе языка все гораздо проще: язык это всего лишь инструмент. Количество необходимых людей знающих конкрентный инструмент определеяется количеством вакансий. Согласно hh.ru для Питера: Java: 139 вакансий С++: 107 вакансий PHP: 89 вакансий C#: 76 вакансий Python: 16 вакансий Это вакансии в названии которых упомянут соотвествующий язык, т.е. понятно что "Java SE" и "Java EE" сложились (а это далеко не одно и тоже) и если искать .NET, то найдется примерно столько же сколько и C#, т.к. в вакансии упоминают и то и другое. Так что каким бы ни был Питон крутым, современным, продвинутым и вообще нереально классным, а 16 вакансий вряд ли обрадуют соискателя. |
Надо ещё и зарплаты смотреть) Да и собсно одной вакансии может вполне хватить. И вообще по языкам ориентироваться неправильно. Язык учится быстро (кроме плюсов). Переход с шарпа на яву, по-моему, в основном заключается в узнавании, чего же на яве нет %) Язык - не весь инструмент. Ещё конкретные API есть и их изучение как бы не сложнее самого языка (в той же яве). Но они вот всегда недолговечны.
Нужно быть хорошим специалистом. Для этого работа должна нравиться. Потому советую решать из того, чего же хочется делать. |
Цитата:
|
Исходить из того, чего же им хочется - могут все, кто могут хотеть и исходить %) Решения только разные будут, придётся ещё и что можется и что есть учитывать.
|
Цитата:
На маках(с небольшими траблами в виду невозможности JIT)/дроидах вполне себе пашет. |
Тут есть несколько разных соображений.
Я для себя решил переучиваться, но на что-то более серьезное, с лучшей перспективой: работать в исследовательской лаборатории, что-нибудь связанное с исследованием естесственных языков / разработками в этой области. Какой язык для этого учить уже будет не важно, там уже какие инструменты будут, тот язык и буду использовать, но ориентировочно: Октава/Матлаб, Питон/R, Лисп, естесственно :) хотя сегодня не так актуально, но я без него уже никуда. Если лучшее не получится: искать что-нибудь по Питону / Руби. Мотивация в том, что в большинстве случаев разработка будет не в Виндовсе, а значит можно пользоваться любимыми инструментами, в любимой среде, безо всяких проприетарных / ширпотреб заморочек. Чуть по-хуже и со своими заморочками: промышленное программирование, либо Ява либо С#. На переквалификацию в С++ нужно потратить много времени, и нужно хотя бы зачатки мазохизма иметь, иначе будет очень грустно. Мне лично неприятно работать с С# не потому что язык такой плохой, а изза среды и традиций которые он вокруг себя образовал. Утрируя эти традиции можно выразить как то, что люди которые на нем пишут думают что пишут на Вижуал Студио языке. Но если вас больше привлекает рыбалка, или семейные вечера перед телевизором, то вам бы подошло :) Худшее - что греха таить, спрос на Флеш упал, особенно невостребованными у нас остались люди с большим стажем / претендующие на хорошую зарплату... но ЯваСкрипт просто расцвел. При тотальном непрофессионализме ЯваСкрипт программистов, даже без опыта можно претендовать на хорошие условия / должность - главное не стеснятся: так плохо программировать, как это делает типичный ЯваСкрипт "программист" очень тяжело :) Еще я задумывался одно время перепрофилироваться в сисадмина, потому что люблю, но есть столько подводных течений в поиске работы... такая переквалификация рассматривается HR как понижение планки, и в нее просто не верят / я даже ни на одно интервью не попал. |
Цитата:
P.S. Я выбрал java |
Цитата:
|
Мой небольшой опыт знакомства с С++ - НВидиа + Куда (проприетарная библиотека для написания кода специально для параллельного выпонения на видеокарточках).
Что я из этого опыта почерпнул: максимально болезненный отладчик. Такой плохой, что вполне можно понять людей, которые считают, что логи лучше. И это не проблема конкретного отладчика, а проблема языка и других инструментов с ним связаных. Чтобы понять что видно в отладчике нужно в какой-то степени представлять, что компилятор делает с кодом. Стек трейсов нет. Сообщения об ошибках: либо их нету, либо их 100500 и все указывают в неправильное место. Очень редко когда случается, чтобы ошибка обнаруженная компилятором была именно ошибкой сделаной разработчиком. Как правило можно только косвенно догадаться, что произошло. Макросы, которые отладке вообще, в принципе не поддаются. Чтобы собрать не совсем тривиальный проект нужно очень много чего знать про инструменты сборки. Либо можно не знать (Вижуал Студия, например), но тогда другим людям, которые лучше вас в этом разбираются это очень не понравится. Очень просто ошибиться в тривиальных вещах, и при этом нарваться на абсолютно непредсказуемые, никак не связаные с ошибкой последствия. Компилятор пытается быть строгим, но ввиду плохой семантики языка, он просто не может отличить ошибочный код от нормального. Ну и про плохой дизайн: конечно, бывает и хуже, но смысл в том, что С++ не задумывался, как хороший язык программирования. Он задумывался как "накидать модных фичь" в уже существующий плохо спроектированый язык (который в свою очередь никогда не был хорошим языком программирования, а писался как подспорье в работе с ассемблером). Т.е. есть языки, ну, не знаю, "цельные", в них есть стройная система, они последовательные в приемах и правилах стандартной библиотеке, за ними стоит какая-нибудь математическая концепция. С++ - это разброд и шатания, каждый пишет кто во что горазд. Концептуально С++ никак не связан с теоретическим программированием. Вернее, он на столько далек от идеала, что даже всерьез о нем говорить не стоит. |
Мда...
Друзья, С++ - это последний вариант, куда можно "податься после флеша", избегайте этого по возможности, лучше кодить на JS. Так короче и без обиняков. Цитата:
|
ОК, наверное нужно было уточнять. Речь не о том, что С++ по всем параметрам далек от идеала, а конкретно о семантике.
С точки зрения семантики - С++ это взрыв головного мозга. Какой-то набор абсолютно произвольных правил. В современном теоретическом программировании, чаще всего для описания языка используют операционную семантику (т.как денотационная и аксиоматическая - менее гибкие системы, которые еще труднее применять к реальным языкам). В двух словах, операционная семантика описывает программы как последовательность действий которую должен выполнить компьютер, чтобы программу вычислить. В функциональных языках это проще описать, в императивных - сложнее, но это уже тонкости. Я сначала приведу примемр знакомый из AS / JS: когда мы отнимаем от одной даты другую, мы получаем число (разница между временем первой и второй даты в миллисекундах). Но это приводит нас к противоречию, т.как сложение - функция обратная отниманию, а прибавив число к дате, мы дату не получим. Такое поведение языка создает уникальное правило, плохо кореллирующее с ожиданиями человека, знакомого с тем, как работает сложение и вычитание. Но в AS/JS такие случаи единичны, и стандартная библиотеке не особо грешит когнитивными диссонансами типа описанного выше. В С++ такого рода вещи отданы на откуп программисту - как хочешь, так и пиши. Но гораздо более серьезная проблема - недетерминированое поведение любой функции, потому что любая другая функция, в теории, может ей как-то навредить записав что-то в память мимо того места, куда она "должна" была записать. Т.о. если в языке с автоматическим управлением паматью мы можем смело выдвигать какие-то предположения о том, как функции работают, и каких результов от них ожидать, то в С++ этого гарантировать нельзя. Даже функцию типа Код:
const char * foo() { return "x"; }Поэтому, традиционно С++ называют языком с "плохо определенной", "размытой", или вообще "не определенной" семантикой. Конечно, у слова "семантика" есть много значений, и в каком-то другом значении, оно может быть применимо к тому, что происходит в С++ программах, но я имел в виду только конкретное определение формальной семантики компьютерных языков. |
Дружище, к практике твои примеры имеют весьма отдаленное отношение. Или они крайне неудачны.:)
Я как бы даже не знаю.. никогда не думал о семантике языка, как о препятствии в его применении. Есть инструментарий, или ты умеешь им пользоваться, или нет, все просто. Вообще, твои высказывания о ЯП напоминают мне цитаты с какого-то съезда лингвистов (не программистов), даже лингвистов-гурманов, я бы сказал. :) Цитата:
|
О как, все просто! :)
Нет, я сказал именно то, что хотел. Я не имел в виду неопределенное поведение, хотя в каком-то смысле оно может иметь отношение к вышесказанному, я говорил о плохо оперделенной операционной семантике. Это хорошо определенное понятие, которое не нужно интуитивно угадывать. Можно просто взять книжку (например, того же Бенжамина Пирса) / открыть Вики и прочитать, что это такое. По поводу практики: а какие именно примеры? Я старался говорить обобщенно. "Нету стек трейсов" - это не пример, это явление которому подвержен весь язык в любом его проявлении. Знание этого факта не сделает меня лучшим программистом на С++. Хотя, может сделать печальным программистом на С++ :) Семантика языка описывает то, как мы его понимаем, и особенно то, как его понимает компилятор / интерпретатор. Может ли это быть препядствием? - если семантика состоит из множества противоречивых правил, непоследовательная, и т.д. то, конечно она будет препядствием. В целом я бы охарактеризовал ситуацию следующим образом. Пока на С++ решаются тривиальные вещи, им пользоваться относительно удобно. Компилятор не встречает сложных случаев в разборе программы, код получается быстрый и компактный - все довольны. Но чем сложнее становится программа, тем хуже ситуация, и тем хуже по отношению к другим языкам, где семантика лучше определена. Есть несколько языков, с компиляторами способными сгенерировать программы сравнимые по скорости с С++. Хаскелл - один такой язык, но я плохо его знаю, ОКамл я теперь знаю немножко лучше. Так вот, Благодаря более однозначной семантике и более скупому и последовательному набору правил, чем больше программа на ОКамле, тем больше вероятность того, что она будет быстрее / компактнее программы на С++ делающей такую же работу. Это достигается за счет того, что компилятору легче делать более глобальные предположения о намерении программиста. Что интересно, в С++ неопределенное поведение как раз таки является тем фактором, который позволяет делать такие предположения компилятору! |
Что ж, ситуация прояснилась и выглянуло солнце :). Да, пожалуй на счет семантики я таки погорячился.
И все-таки, ты опять говоришь немного не про то :) . Есть очень большая область программирования, где просто нет менеджеров памяти с GC, и где наиболее информативным трейсом, порой, оказывается дамп.. Это разработка ОС, системных утилит, драйверов... та же графика в конце концов. Попробуй ка взаимодействие с грудой железа втиснуть в один хороший язык. Компиляторы то же создаются не по теоретическим домыслам о красоте как бы. Навороты С++ как раз призваны для таких нетривиальных вещей, не?. То, что "хеллоу ворлд" (утрированно) написать легко, это и так очевидно. Поэтому, как-то немного странно читать комментарии в духе "С (С++) - плохой язык", у него-де плохая семантика:). Нужно просто (ага, просто) работать с ним на его поле. Ну. а то, что после флеша идти в эти дебри решится не каждый - это не показатель :). PS. вот, навеяло как-то: http://www.flasher.ru/forum/showthread.php?t=113017 |
По поводу взаимодействия с железом - ну так на Лиспе писались операционные системы... Дилан позиционировался как язык для системного программирования. Го - в принципе мог бы заменить Си, и в нем очень много недостатков учли.
С++ - это явление похожее на олигополию, т.е. когда рынок занимается небольшой группой продавцов, которые согласны делится друг с другом, но никогда не с маленькими продавцами. Т.е. он когда-то занял финансово "правильную" нишу - на нем написали какие-то вещи, которые потом стали очень популярными, не зависимо от выбранной технологии (ДОС, например). Популярность продуктов потянула за собой вложения в разработку инструментов для языка, потом на этих инструментах воспиталось много людей, и так возникла лавинообразная ситуация, когда любые другие конкуренты не в состоянии что-то противопоставить. Только еще несколько таких же, по размеру, языков. Собственно, таким же образом Кобол живет и процветает и по сей день. Кто-то мне год или два назад клялся, что и по сей день большинство кода в мире написано на Коболе - я не проверял, но охотно в это поверю. И ситуация точно такая же: нельзя отказаться изза легаси, чтобы поддерживать легаси создается еще больше легаси, но пока дело прибыльное, по причинам не зависящим от технологии, технология будет жить. С++ отнюдь не единственный язык, который может компилироваться в нативный код, в котором есть указатели / возможность, при необходимости дописать код на ассмеблере (из того, что я знаю: на Паскале это возможно, в Лиспе - зависит от производителя, но в SBCL - да, можно, OCaml - да, можно, на счет вставок на ассемблере - не уверен, но указатели и прямой доступ к памяти там есть.) Во всех вышеперечисленных языках, естесственно есть специальные библиотеки для работы с системными процедурами. Например, Микрософт разрабатывал и разрабатывает библиотеку проверки драйверов на ОКамле. |
Опа, опять на гризонте мировой заговор :). Засилье си оплачно олигархами! Свободу попугаям!
Кто лоббировал си в мире линкус? Торвальдс?:) Вот ведь неотесанный, нет бы ему [подставить самостоятельно] взять, так ведь нет, продался в олигополию !:)(блин, где ты только слова такие выискиваешь :) )Я далек от всего этого, и считаю, что си занял свои позиции отчасти по причинам историческим, а в основном благодаря самому себе. Можно, конечно, очень долго переливать из пустого в порожнее, но только факт остается фактом. Хлебушек на масло можно заработать, программируя на языке мэйнстрима, заморачиваться по поводу хороший он или плохой - это как поговорка про хорошую и плохую жену. Перечисленные тобой языки по большей части ни о чем, при всей их красоте. |
Это не мировой заговор, это тенденция в экономике - случается во всех сферах хозяйствования, где сложно получить прибыль без массированых вложений. Пример: телефонные компании, производители электричества, авиакомпании и т.д. Но у этой тенденции есть свои характеристики, и одна из них заключается в том, что качество или стоимость продукта могут сильно отличаться от "разумных" для выбраной категории.
Существует наивное представление о конкуренции, с точки зрения которого, логически следует, что если продуктом пользуется много людей, то он обязательно хороший. Но в случае с моно- и олигополиями это не работает, и нужны другие критерии оценки. Разработка языка включающая в себя стандарную библиотеку, компилятор, отладчик и т.д. - сами по себе "не очень" затратный процесс, ну, по крайней мере не на столько, чтобы гарантировать эксклюзивность, но качественный компилятор - это таки очень трудозатратный процесс, восновном изза времени, которое занимает разработка. Почему Си был выбран Линусом Торвалдсом? - Стандарт Юнкс описывает систему с обязательным Си компилятором, системные вызовы соответствующими конвенции Си, бутлоадер уже был написан на Си к тому времени и т.д. и т.п. Даже если бы он ненавидел Си, у него не было другого выбора. По поводу перечисленных мной языков и их ниочемности: смотри, это такое же наивное заблуждение, как и заблуждение человека, который не понимает зачем нужны суперкомпьютеры, заявляя, что если ему его третьего пентиума достаточно для работы в Экселе, то больше ничего уже никому и не нужно. Эти языки - хлеб и масло исследователя в области теоретического программирования. Без этих исследователей не было бы не мейнстрим языков, ни хороших компиляторов, ни хлеба с маслом для тех самых наивных программистов, которым эти языки "не нужны". ЗЫ. Олигополия - термин из теории игр, но используется еще много где, макроэкономика, например. |
Ок. Сдаюсь :)
Но я как-то слабо себе представляю, что в обозримом будущем си уступит место другому языку. Но вам, теоретикам, виднее, конечно :). Исследования, безусловно, нужны и очень хорошо, что они есть. Тут без вопросов. И да, удачи в поисках работы! :) |
Всем большое спасибо за ответы/комментарии =)
Отдельное огромное спасибо wvxvw за то, что напомнил про JS, ведь они с AS очень похожи по синтаксису (самому часто приходилось что-то делать на нём, правда не столь серьёзное, как AS разработки). И ещё вопрос, возможно wvxvw или кто-то другой больше осведомлён в этом вопросе, чем я: какое портфолио необходимо набить для JS, чтобы быть интересным для работодателя? Т.е. у меня есть свои наработки, но я подозреваю, что они довольно скупые (несколько сайтов, которые делал для себя и всё). Т.е. мне понятно, что необходимо рассказать о себе в плане Flash, чтобы у работодателей появился интерес к тебе, но я не очень представляю себе, что необходимо рассказать о JS (на ум приходит только диалог в форме "Вы знаете JS?" -> "Да, знаю"). |
koIIImarik
JQuery, ajax, highslide - и ты тру прогер. Более половины вакансий - твои! Необходимо знание библиотек. Сделать на js что-то своими руками довольно долго и геморойно, поэтому приветствуются знания различных библиотек на все случаи жизни. Чем быстрее ты сможешь сделать плавное выпадающее меню - тем лучше. Конечно, необходимо понимание работы DOM страницы, html и css - твои лучшие друзья. Ещё необходимо смутное представление о безграничных и не осязаемых возможностях html5 (что-бы подчёркивать свою важность). Это если ты собрался в сайто-строители.. Да и приготовься большую часть времени верстать разметку, потому-что js программист и верстальщик - это чуть менее чем синонимы. Для игростроя или чего посерьёзнее не знаю, но наверняка потребуются знания повыше среднестатического уровня тру js проггера. Соответствующие библиотеки, углубленные знания во всех тонкостях js-шного "ооп", реальное представление об html5 тегах. |
Tails, почти полностью не согласен.
|
Hauts,
Думаешь планка ещё ниже? |
2 Hauts:
Уточните, пожалуйста, что вы имеете ввиду, и какие, на ваш взгляд, технологии/проекты необходимо знать соискателю, чтобы быть интересным для работодателей при поиске Frontend? |
Цитата:
|
koIIImarik, Tails, извините, что так сумбурно написал, не объяснив своего мнения.
Артем, в общем, правильно сказал то, что я думаю о js. Ну а если по пунктам, то как-то так получится: Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
В итоге мое мнение: Если хотите податься в "сайтостроители" — начните с базиса. Прочитайте про то, как работают браузеры. Изучите логику работы цсс, селекторы и правила. Изучите "голый" яваскрипт на таком уровне, чтобы вы могли на нем программировать более-менее осмысленные вещи. Потом переходите к фрэймворкам. Ваша ценность как специалиста не будет измеряться количеством фрэймворков, с которыми вы сталкивались. Она будет измеряться вашим опытом работы, который будет однозначно подсказывать вам степень необходимости использования фрэйворков и вашим "боевым скиллом", то есть умением в блокноте с чистого листа решить задачу (без "тепличных" условий существования любимых библиотек). |
@Hauts, а можете пожалуйста скинуть одно из ваших домашних заданий для соискателей, в личку или прям сюда, просто интересно :)
|
Присоединяюсь к AlexLucas, мне было бы тоже интересно, чтобы оценить свои возможгности.
|
Скинул.
P.S.: Если свои решения скините мне, то не забудьте сказать, сколько времени потратили, это важно :) |
Спасибо за пример задания)
|
| Часовой пояс GMT +4, время: 18:51. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.