LINUX.ORG.RU
ФорумTalks

Java как первый язык программирования


0

2

Знакомый хочет научиться кодить на Java. Опыта программирования не имеет, ни одного языка/парадигмы не знает. То есть помимо введения в собственно java и ооп, требуется введение в программирование как таковое. Видимо, нужны серии учебных задач, позволяющие поэтапно разобраться с переменными, функциями, и тд. Посоветуйте подходящих учебников, желательно на русском и не очень нудных.

★★★★★

Ответ на: комментарий от baverman

>Гетеротопическая оссификация головного мозга

это по латыньски?
в смысле «старую собаку новым фокусам не научишь?»

Karapuz ★★★★★
()

Тут два варианта: либо Васик либо Лисп.

o4kapuk
()
Ответ на: комментарий от madcore

Был один, хвастался что на одеске за $18/hour лабает. Чо, я завидую

Karapuz ★★★★★
()
Ответ на: комментарий от le_legioner

>Java будет полезна сисадмину?

Сисадмину жаба бесполезна. Полезен любой скриптовый язык

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от Bioreactor

>Программист - это творческая профессия.

Сходная с профессией лингвиста или филолога или философа. (Не путать с ГСМ!)

Это только старые пердуны, совковые препы со всякими лажовыми ВАКовскими «степенями» думают, что для программирования нужна «математика».

Для программирования нужен врожденный лингвистический дар.

Недаром знатоки свободного разговорного английского ценятся «охотниками за головами» более «ботаников»-математиков-теоретиков.

Смешались в кучу люди, кони...

DNA_Seq ★★☆☆☆
()

Тут есть рекомендации http://www.javatalks.ru/ftopic1627.php#4817 сам сейчас учу по книге «Java 2 найболее полное руководство» П. Ноутон и Г. Шилдт, её и порекомендую. В ней очень увлекательно и подробно расказано всё. Могу порекомендовать также «Java Самоучитель» И. Хабибулин, тоже увлекательно и доступно, но менее подробно чем в первой. Зато во второй охвачена ещё и Java 5 в отличии от первой где только Java 2. По части практики можно пошариться поразбирать примеры с форума http://www.javatalks.ru

Deleted
()
Ответ на: комментарий от Deleted

горит-не горит. это походу операции на бинарями, XORы там всякие, тут терагерцы и не нужны и даже памяти не нужно, 64-битное число это 64 лапочки

Karapuz ★★★★★
()
Ответ на: комментарий от Xellos

>А если ламп миллион?

миллион ламп? это целый мегабит

Karapuz ★★★★★
()

Сначала лучше С. Потом Java. Не дай ему покалечить свой мозг С++. С++ можно потом рассмотреть.

vertexua ★★★★★
()
Ответ на: комментарий от aptyp

>но спрошу - а ява широко распространена во фрилансе?

на западе это основной язык, поэтому да

Karapuz ★★★★★
()

По книжкам С - Керниган, Java - Эккель. Еще Хорстманн, Корнелл, но это очень технические книжки, как писать _правильно_ не научат.

vertexua ★★★★★
()
Ответ на: комментарий от baverman

Наша годная сишечка компилируется в асм, процессоры способны исполнять максимум по одной инструкции за такт (современные - по много инструкций параллельно, но только, если они не взаимозависимы).

Deleted
()

кстати, кто-нибудь books.net-soft.ru/book-616.html это смотрел?

Karapuz ★★★★★
()
Ответ на: комментарий от Deleted

>Произведение всех простых чисел до 50 равно: 614889782588491410

Хреново. Надо ещё думать.

Xellos ★★★★★
()
Ответ на: комментарий от Deleted

Решил, сложность — порядка числа всех комбинаций линейных инверсий, если не учитывать нахождение НОК.

import itertools

def GCF_two(a, b):
    while b:
        a, b = b, a % b
    return a

def LCM_two(a, b):
    return a / GCF_two(a, b) * b

def GCF(num):
    return reduce(GCF_two, num)

def LCM(num):
    return reduce(LCM_two, num)

def solve(n, inversions):
    count = 0
    for l in range(1, len(inversions)+1):
        for r in itertools.combinations(inversions, l):
            sign = 1 if l % 2 else -1
            count += n / LCM(r) * 2 ** (l-1) * sign

    return count

print solve(20, (2, 3, 8))
print solve(172, (19, 2, 7, 13, 40, 23, 16, 1, 45, 9))

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

baverman ★★★
()
Ответ на: комментарий от baverman

Хрен там, чо. Эта сложность растет еще быстрее. Уныние и пичаль. Работа встала.

baverman ★★★
()

Плюсы пусть учит.

drull ★☆☆☆
()
Ответ на: комментарий от baverman

Решил, сложность — порядка числа всех комбинаций линейных инверсий, если не учитывать нахождение НОК.

maxima тонко намекает, что 50! / (25! * 25!) == 126410606437752

Что как бы многовато.

Deleted
()
Ответ на: комментарий от Deleted

А если не получил - с вероятностью 99% не решил.

PS. Питона там нет.

Deleted
()

Пусть учит Assembler. Для начала надо понять, как работают программы, а потом уже можно и C++ и Java.

Pidgin ★★
()
Ответ на: комментарий от Manhunt

если цель просто некоторое непродолжительное время зарабатывать деньги не выходя из дому - то пусть лучше освоит html, потом возможно еще javascript. спрос большой, денег нормально, учится просто и быстро -> быстрее можно начать работать. а вот так с наскоку в жаву не пробьешся, там слишком громоздкая инфраструктура, а без нее ты никому не нужен.

val-amart ★★★★★
()
Ответ на: комментарий от Karapuz

Да, только сейчас вспомнил про рекомендацию ознакомиться с книгой(?) «Thinking in C» до изучения Java.

luke ★★★★★
()
Ответ на: комментарий от Karapuz

> Но «школы-только-на-Java» также перестали тренировать мозги студентов для того, чтобы они стали знающими, проворными, и гибкими достаточно, чтобы могли хорошо проектировать программы (и я не имею в виду объектно-ориентированное «проектирование», когда вы тратите несчётное количество часов, переписывая собственный код при перестройке вашей объектной иерархии, или мучаетесь такими фальшивыми «проблемами», как выбор «содержит» или «является» (прим.: has-a vs. is-a, выбор между наследованием и композицией классов)). Необходимы тренировки, чтобы научиться думать на нескольких уровнях абстракции одновременно, что является абсолютно необходимым для проектирования отличной архитектуры программного обеспечения.

Это диагноз?

valich ★★★
()
Ответ на: комментарий от valich

> Преподавание ООП состоит в основном в запоминании нескольких словарных терминов, таких как «инкапсуляция» и «наследование» и заучивании ответов на множество вопросов о разнице между полиморфизмом и перегрузкой операций. Не сложнее заучивания знаменательных дат и имён на уроках истории, ООП ставит неадекватно простую задачу для того, чтобы отпугнуть первокурсников. Когда у вас проблемы с ООП, ваша программа все-таки работает, она просто становится сложной для поддержки. Якобы. Но когда у вас проблемы с указателями, ваша программа выдаёт Segmentation Fault, и вы понятия не имеете, что происходит, до тех пор пока вы не остановитесь, не сделаете глубокий вдох и не попытаетесь на самом деле заставить свой ум работать на двух уровнях абстракции одновременно.

Да, это диагноз!

valich ★★★
()
Ответ на: комментарий от madcore

Назад в школу - сильно медленно. Иногда нужно прямо сейчас.

Я сейчас точно в таком же положении. Лучше иметь какой-то сайт сейчас, чем хороший - но через десять лет.

stevejobs ★★★★☆
()
Ответ на: комментарий от Xellos

Проще купить за 100 баксов еще один сервер, чем купить за вдесятеро большие деньги чувака, который будет придумывать заумные алгоритмы.

stevejobs ★★★★☆
()
Ответ на: комментарий от baverman

А что за проекты брал? Сайтики или что-то другое?

pevzi ★★★★★
()
Ответ на: комментарий от stevejobs

А потом мы удивляемся - а почему скайп сто мегабайт памяти кушает и ничего не делает? А почему вебсфера два гигабайта памяти кушает, и опять же ничего не делает, а чтобы делала, ты ей ещё пару гигабайт дай, и ещё пару процессоров?

Xellos ★★★★★
()
Ответ на: комментарий от x3al

И как мы раньше жили... Win95 помещалась в 30 мегабайт, если постараться. Win7 раскидывается на двадцать без тени стыда. То же и со всем остальным, и со скайпом тоже.

Xellos ★★★★★
()
Ответ на: комментарий от Xellos

Это нормально, фичи совершенно разные. Да и win95 и прочие поделки тех времён едва ли можно было назвать безбажными (а что ещё ожидать от C/C++ и жонглирования указателями по поводу и без?)

x3al ★★★★★
()
Ответ на: комментарий от Deleted

>Произведение всех простых чисел до 50 равно: 614889782588491410

Ммм. А надо ли вообще итерировать? Если у нас дана инверсия 2, мы без итерирования знаем, что результат N div 2. Получается что? Получается разложение периодов на простые множители, рекомбинация там где возможно, ну и собссно подсчёт. Не? Периоды у нас до 50, раскладываются быстро, всего их 100 штук, сортировка пройдёт быстро, рекомбинация тоже... А можно даже и не сортировать, пожалуй.

Xellos ★★★★★
()
Ответ на: комментарий от x3al

>фичи совершенно разные

Да ну? И в чём? Опять же - почему в линуксе на 20Гб можно поставить столько софта... я даже не знаю сколько, я не забью системой без пользовательских файлов 20Гб.

Xellos ★★★★★
()
Ответ на: комментарий от Manhunt

Дейтелы?

Человек вынужден работать на дому

Понимаю. Знал такого Web-дизайнера

drSchur ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.